Страницы: 1
RSS
Подсчет отработаного времени из нескольких таблиц, Расчет графика по нескольким таблицам в одной книге.
 
Добврый день, уважаемые повелители формул. Подскажите пожалуйста решение вопроса. есть несколько таблиц в одной книге по периодам. Некоторые люди работают несколько периодов, нетороые один. Как можно посчитать из всех таблиц пофамильно количество отработанных дней, часов и выходных. Заранее Вам благодарен.
Изменено: Sanja - 25.08.2026 16:52:03
 
Можно таким макросом
Код
Sub Макрос1()
    Dim sd As Object, arr, arr_rez, y, k As Long, n As Long, m As Long
    Set sd = CreateObject("Scripting.Dictionary")
    k = Cells(Rows.Count, 1).End(xlUp).Row
    arr = Range("A1:Q" & k)
    k = 0
    For n = 1 To UBound(arr)
        If IsNumeric(arr(n, 1)) And Not IsEmpty(arr(n, 1)) Then
            If Not sd.Exists(arr(n, 2)) Then
                Set sd(arr(n, 2)) = CreateObject("Scripting.Dictionary")
                sd(arr(n, 2)).Add "working", 0
                sd(arr(n, 2)).Add "weekend", 0
                sd(arr(n, 2)).Add "haurs", 0
                k = k + 1
            End If
            For m = 3 To 17
                If IsNumeric(arr(n, m)) Then
                    sd(arr(n, 2))("working") = sd(arr(n, 2))("working") + 1
                    sd(arr(n, 2))("haurs") = sd(arr(n, 2))("haurs") + arr(n, m)
                ElseIf arr(n, m) = "В" Then
                    sd(arr(n, 2))("weekend") = sd(arr(n, 2))("weekend") + 1
                End If
            Next
        End If
    Next
    ReDim arr_rez(0 To k + 1, 1 To 4)
    arr_rez(0, 1) = "ФИО"
    arr_rez(0, 2) = "Выходные дни"
    arr_rez(0, 3) = "Рабочие дни"
    arr_rez(0, 4) = "Часы"
    n = 1
    For Each y In sd
        arr_rez(n, 1) = y
        arr_rez(n, 2) = sd(y)("weekend")
        arr_rez(n, 3) = sd(y)("working")
        arr_rez(n, 4) = sd(y)("haurs")
        n = n + 1
    Next
    Range("T1").Resize(UBound(arr_rez), UBound(arr_rez, 2)) = arr_rez
End Sub


Считает по нумерованным строкам в столбце A, результат в T1
Изменено: Msi2102 - 25.08.2026 16:38:55
 
Здравствуйте.
Вариант формулами в файле.
Код
=СУММПРОИЗВ(($B$1:$B$26=$B30)*($C$1:$Q$26="В"))
=СУММПРОИЗВ(($B$1:$B$26=$B30)*(ЕЧИСЛО($C$1:$Q$26)))
и формула массива
=СУММ(($B$1:$B$26=$B30)*ЕСЛИ(ЕЧИСЛО($C$1:$Q$26);$C$1:$Q$26;0))
 
А ещё дней в месяце бывает 31  :D
Изменено: Msi2102 - 25.08.2026 16:59:06
 
Цитата
написал:
Здравствуйте.Вариант формулами в файле.

Спасибо Вам огромное. Рабочая схема. Но почему-то не считаются часы.  
Изменено: олег - 26.08.2026 15:37:26
 
Цитата
написал:
не считаются часы.

Формулы массива вводятся одновременно нажатием Ctrl + Shift + Enter.  
Изменено: gling - 26.08.2026 20:21:03
 
Цитата
написал:
Формулы массива выводятся одновременно нажатием Ctrl + Shift + Enter.  
Посчитались дни, Выходные а часы пишет #ЗНАЧ
 
Цитата
написал:
пишет #ЗНАЧ

Если сделали всё правильно, но результат #ЗНАЧ, тогда покажите ваш файл. У вас в файле примере была ошибка в имени Светлана и Светлан. Может и в файле есть какие-то ошибки.
Или попробуйте другую формулу, но тоже массивная
Код
=СУММ(ЕСЛИОШИБКА((B30=$B$1:$B$26)*$C$1:$Q$26;))
Изменено: gling - 26.08.2026 19:26:17
 
Цитата
написал:
Если сделали всё правильно, но результат #ЗНАЧ, тогда покажите ваш файл. У вас в файле примере была ошибка в имени Светлана и Светлан. Может и в файле есть какие-то ошибки. Или попробуйте другую формулу, но тоже массивная
Спасибо Вам огромное
 
д.массив
Страницы: 1
Читают тему
Наверх