Sub Макрос2()
arr_b = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row).Value
Set sd = CreateObject("Scripting.Dictionary")
For n = 1 To UBound(arr_b)
If Not sd.Exists(CDate(arr_b(n, 1))) Then
sd.Add CDate(arr_b(n, 1)), DateDiff("s", arr_b(n, 1) & " " & CDate(arr_b(n, 2)), arr_b(n, 3) & " " & CDate(arr_b(n, 4))): m = m + 1
Else
sd(CDate(arr_b(n, 1))) = CLng(sd(CDate(arr_b(n, 1)))) + DateDiff("s", arr_b(n, 1) & " " & CDate(arr_b(n, 2)), arr_b(n, 3) & " " & CDate(arr_b(n, 4)))
End If
Next
ReDim arr_rez(1 To m, 1 To 4)
n = 1
For Each y In sd
arr_rez(n, 1) = y
arr_rez(n, 2) = sd(y)
t1 = sd(y) \ 3600: t2 = (sd(y) - t1 * 3600) \ 60: t3 = sd(y) - t1 * 3600 - t2 * 60
arr_rez(n, 3) = t1 & " ч " & t2 & " мин " & t3 & " сек"
arr_rez(n, 4) = sd(y) / 86400
n = n + 1
Next
[l2].Resize(UBound(arr_rez), 4) = arr_rez
End Sub
Sub Макрос3()
arr_b = Range("A2:D" & Cells(Rows.Count, 1).End(xlUp).Row).Value
Set sd = CreateObject("Scripting.Dictionary")
For n = 1 To UBound(arr_b)
If CDate(arr_b(n, 1)) <> CDate(arr_b(n, 3)) Then
v_k = "00:00:00"
Else
v_k = CDate(arr_b(n, 4))
End If
d_k = CDate(arr_b(n, 3)) & " " & v_k
s_k = DateDiff("s", d_k, CDate(arr_b(n, 3)) & " " & CDate(arr_b(n, 4)))
If Not sd.Exists(CDate(arr_b(n, 3))) Then
sd.Add CDate(arr_b(n, 3)), s_k: s_k = 0: m = m + 1
Else
sd(CDate(arr_b(n, 3))) = CLng(sd(CDate(arr_b(n, 3)))) + s_k: s_k = 0
End If
If Not sd.Exists(CDate(arr_b(n, 1))) Then
sd.Add CDate(arr_b(n, 1)), DateDiff("s", arr_b(n, 1) & " " & CDate(arr_b(n, 2)), d_k): m = m + 1
Else
sd(CDate(arr_b(n, 1))) = CLng(sd(CDate(arr_b(n, 1)))) + DateDiff("s", arr_b(n, 1) & " " & CDate(arr_b(n, 2)), d_k)
End If
Next
ReDim arr_rez(1 To m, 1 To 4)
n = 1
For Each y In sd
arr_rez(n, 1) = y
arr_rez(n, 2) = sd(y)
t1 = sd(y) \ 3600: t2 = (sd(y) - t1 * 3600) \ 60: t3 = sd(y) - t1 * 3600 - t2 * 60
arr_rez(n, 3) = t1 & " ч " & t2 & " мин " & t3 & " сек"
arr_rez(n, 4) = sd(y) / 86400
n = n + 1
Next
[p2].Resize(UBound(arr_rez), 4) = arr_rez
End Sub
|