Доброе время суток. Файл: http://plint.ucoz.ru/Tabel1.rar Расчеты произведены при помощи функций... Лист Т-О - рассчитан для 1 человека, а необходимо рассчитать 300. Из этих расчетов необходимо составить сводный табель. При этом на отдельном листе выбить суммарную информацию информацию по подразделениям (S,L,K,Z) Спасибо огромное...
Доброе время суток. Файл: http://plint.ucoz.ru/Tabel1.rar Расчеты произведены при помощи функций... Лист Т-О - рассчитан для 1 человека, а необходимо рассчитать 300. Из этих расчетов необходимо составить сводный табель. При этом на отдельном листе выбить суммарную информацию информацию по подразделениям (S,L,K,Z) Спасибо огромное...DZiMMi
Заведите отдельный лист(таблицу) с заполненными полями: месяц, подразделение, ФИО (или номер) работника, отметка о явке/неявке, время, и уже оттуда заполняйте табеля и считайте сводный табель. Вам будет намного легче, да и формулы будут не такие массивные.
Заведите отдельный лист(таблицу) с заполненными полями: месяц, подразделение, ФИО (или номер) работника, отметка о явке/неявке, время, и уже оттуда заполняйте табеля и считайте сводный табель. Вам будет намного легче, да и формулы будут не такие массивные.M73568
Сообщение отредактировал M73568 - Понедельник, 19.08.2013, 16:58
Так вот в этом то и проблема, т.к. табель заполняют 20 подразделений, в ручную считать долго, а автоматизировать при помощи формул - документ тормозит... да и на моем компе долго открывается...
Так вот в этом то и проблема, т.к. табель заполняют 20 подразделений, в ручную считать долго, а автоматизировать при помощи формул - документ тормозит... да и на моем компе долго открывается...DZiMMi
может подскажет как код написать чтобы при контроле на листе табель (там где проставляются по подразделениям неявка) проводить данные. пробовал: [vba]
Код
Sub Пересчет() Application.ScreenUpdating = False а = 1 Range("A8").Select For а = 1 To 300 Step 1 If a = 300 Then Exit For ActiveCell.FormulaR1C1 = а Sheets("Операционный").Select Range("E8:AI307").Select Application.CutCopyMode = False Selection.Copy Range("AY8").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("E8").Select Sheets("Т-О").Select Range("A8").Select а = а + 1 Next Application.ScreenUpdating = True End Sub
[/vba]
Но .... тут идет затирание старой информации? и не сохраняет неявку...
Поэтому нужно сделать что то на подобее только чтобы информация находилась в таблице и в нее можно было бы внести изменение
может подскажет как код написать чтобы при контроле на листе табель (там где проставляются по подразделениям неявка) проводить данные. пробовал: [vba]
Код
Sub Пересчет() Application.ScreenUpdating = False а = 1 Range("A8").Select For а = 1 To 300 Step 1 If a = 300 Then Exit For ActiveCell.FormulaR1C1 = а Sheets("Операционный").Select Range("E8:AI307").Select Application.CutCopyMode = False Selection.Copy Range("AY8").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("E8").Select Sheets("Т-О").Select Range("A8").Select а = а + 1 Next Application.ScreenUpdating = True End Sub
[/vba]
Но .... тут идет затирание старой информации? и не сохраняет неявку...
Поэтому нужно сделать что то на подобее только чтобы информация находилась в таблице и в нее можно было бы внести изменениеDZiMMi
а лучше в процедуре копирования - сделать цикл - и проверку по заполненному значению ячейки отработанного времени в табеле операционный равняется ли она 0 если да тогда далее если нет тогда скопировать в ту же строку
а лучше в процедуре копирования - сделать цикл - и проверку по заполненному значению ячейки отработанного времени в табеле операционный равняется ли она 0 если да тогда далее если нет тогда скопировать в ту же строкуDZiMMi
Sub Провести() Application.ScreenUpdating = False a = 8 c = 51 d = 5 i = 1 f = 20 g = 5 While Worksheets("Îïåðàöèîííûé").Cells(a, 45).Value = 0 a = a + 1 Wend For i = 1 To 45 Step 1 Worksheets("Операционный").Cells(a, c).Value = Worksheets("Операционный").Cells(a, d).Value Worksheets("S").Cells(a, f).Value = Worksheets("S").Cells(a, d).Value c = c + 1 d = d + 1 Next For i = 1 To 15 Step 1 Worksheets("S").Cells(a, f).Value = Worksheets("S").Cells(a, g).Value Worksheets("Z").Cells(a, f).Value = Worksheets("Z").Cells(a, g).Value Worksheets("K").Cells(a, f).Value = Worksheets("K").Cells(a, g).Value Worksheets("L").Cells(a, f).Value = Worksheets("L").Cells(a, g).Value f = f + 1 g = g + 1 Next Sheets("Т-О").Select Range("E10:AI10,E12:AI12,E16:AI16,A3").Select Range("E16").Activate Selection.ClearContents Worksheets("Т-О").Cells(8, 1).Value = Worksheets("Т-О").Cells(8, 1).Value + 1
Range("E10").Select Application.ScreenUpdating = True End Sub
[/vba]
Сам допетрил... Спасибо за тишину... Думал спецы тут консультируют... а на самом деле нужно делать все самому... Хотя так и становятся программерами...
[vba]
Код
Sub Провести() Application.ScreenUpdating = False a = 8 c = 51 d = 5 i = 1 f = 20 g = 5 While Worksheets("Îïåðàöèîííûé").Cells(a, 45).Value = 0 a = a + 1 Wend For i = 1 To 45 Step 1 Worksheets("Операционный").Cells(a, c).Value = Worksheets("Операционный").Cells(a, d).Value Worksheets("S").Cells(a, f).Value = Worksheets("S").Cells(a, d).Value c = c + 1 d = d + 1 Next For i = 1 To 15 Step 1 Worksheets("S").Cells(a, f).Value = Worksheets("S").Cells(a, g).Value Worksheets("Z").Cells(a, f).Value = Worksheets("Z").Cells(a, g).Value Worksheets("K").Cells(a, f).Value = Worksheets("K").Cells(a, g).Value Worksheets("L").Cells(a, f).Value = Worksheets("L").Cells(a, g).Value f = f + 1 g = g + 1 Next Sheets("Т-О").Select Range("E10:AI10,E12:AI12,E16:AI16,A3").Select Range("E16").Activate Selection.ClearContents Worksheets("Т-О").Cells(8, 1).Value = Worksheets("Т-О").Cells(8, 1).Value + 1
Range("E10").Select Application.ScreenUpdating = True End Sub
[/vba]
Сам допетрил... Спасибо за тишину... Думал спецы тут консультируют... а на самом деле нужно делать все самому... Хотя так и становятся программерами...DZiMMi