Страницы: 1
RSS
разбить период (начало и конец) на месяц и посчитать количество времени в разбитом периоде, оптимальное решение?
 
Добрый день!
Коллеги, просьба помочь новичку в задаче.
Есть выгрузка искомой таблицы в ексель. (для примера 5 строк, обычно их более 2000 строк)

Задача: посчитать количество часов в каждом месяце, но так как период "конец" выходит за рамки одного месяца, то вижу решение написать макрос, который разобьет строчку, на две с разбивкой месяца и времени (столбец "Время" это общая сумма данного периода "начало"-"конец") и текущую строчку удалит.

По сути мне надо обработать таблицу, чтобы потом спокойно сделать "сводную таблицу по количеству времени по месяцам"
Предложите, пожалуйста, оптимальное решение.

Заранее благодарен!

ТабельныйКод отсутствияНачалоКонецВремя
1140601.03.201801.03.20188
2140629.03.201801.04.201832
3140628.03.201828.03.20188
4140627.04.201802.05.201848
5140615.05.201815.05.20188
4140629.06.201802.07.201832
 
Цитата
Есть выгрузка искомой таблицы в ексель.
У Вас есть...
Вам в Ваше сообщнение формулу или макрос дописать? На почту выслать? Приехать и внести в Ваш файл?
 
Вам какое время? Просто или рабочее, или с учётом выходных? Вы там посчитали по 8 часов в сутки.
 
Да, там по 8 часов, учет дней нужен фактический.  
Изменено: dalasxz - 17.06.2018 22:05:21
 
Так что ли?
Код
=ЦЕЛОЕ(D2-C2+1)*8
Изменено: skais675 - 17.06.2018 20:57:56
 
Да, для примера верно:

Было:
ТабельныйКод отсутствияНачалоКонецВремя
4140627.04.201802.05.201848
Стало:
ТабельныйКод отсутствияНачалоКонецВремя
4140627.04.201830.04.201832,00
4140601.05.201802.05.201816,00
Потом начало можно превратить в месяц без дат и сделать сводную таблицу.
 
пример(10)2.xlsm (20.99 КБ) Тогда так, разбивает по дням.
Код
Sub tt()
arr = Range("A2:E" & Cells(Rows.Count, "A").End(xlUp).Row).Value
Range("A2:E" & Cells(Rows.Count, "A").End(xlUp).Row).ClearContents
cr = 1
For i = 1 To UBound(arr)
    cr = cr + 1
    cd = arr(i, 3)
    If cd > arr(i, 4) Then GoTo 2
    Cells(cr, "A") = arr(i, 1)
    Cells(cr, "B") = arr(i, 2)
    Cells(cr, "C") = cd
    Cells(cr, "D") = cd
    Cells(cr, "E") = 8
    
    Do While cd < arr(i, 4)
        cd = cd + 1
        cr = cr + 1
        Cells(cr, "A") = arr(i, 1)
        Cells(cr, "B") = arr(i, 2)
        Cells(cr, "C") = cd
        Cells(cr, "D") = cd
        Cells(cr, "E") = 8
    Loop
2:
Next
    
End Sub
 
Спасибо большое!!!
 
dalasxz, запомните: кнопка цитирования не для ответа!
Страницы: 1
Читают тему
Наверх