У меня есть следующий список:
ID In Out
A 23.03.2018 08:16:14 23.03.2018 13:56:03
B 23.03.2018 11:16:14 23.03.2018 13:56:03
Я должен создать что-то вроде этого:
ID In
A 23.03.2018 08:17:00
A 23.03.2018 08:18:00
...
A 23.03.2018 13:55:00
B 23.03.2018 11:17:00
B 23.03.2018 11:18:00
...
B 23.03.2018 13:55:00
Чтобы сделать это, я попытался с этим кодом
Sub TimeSheet()
Dim timeEntries As Range, entry As Range, startTime As Integer, endTime As Integer, hr As Integer, lastRow As Integer
Set timeEntries = Worksheets("Input").Range("A2:A3")
For Each entry In timeEntries
startTime = GetHour(entry.Offset(0, 1), "IN")
endTime = GetHour(entry.Offset(0, 2), "OUT")
For hr = startTime To endTime
With Worksheets("Output")
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
.Range("A" & lastRow) = entry
.Range("B" & lastRow) = DateValue(entry.Offset(0, 1)) & " " & TimeSerial(hr, 0, 0)
End With
Next hr
Next entry
End Sub
Function GetHour(t As Date, stamp As String) As Date
Dim result As Date
If stamp = "IN" Then
If Minute(t) = 0 Then
result = Hour(t)
Else
result = Hour(DateAdd("h", 1, t))
End If
Else
If Minute(t) = 0 Then
result = Hour(t)
Else
result = Hour(DateAdd("h", -1, t))
End If
End If
GetHour = result
End Function
В столбцах «Вход» и «Выход» содержатся каждая дата и час.Что мне нужно сделать, так это посмотреть на часы и минуты с «In» и «Out» и посчитать часы и минуты между ними.Каждый отсчитанный час и минуту должны быть сохранены в строке, как во второй таблице.С помощью приведенного выше кода я могу извлечь только часы, например, 23.03.2018, 09:00:00, 10:00:00, 11:00:00 и т. Д. Есть идеи, как изменить функцию «GetHour», чтобы также сэкономить минуты?Спасибо!