VBA一発芸です。
windowsイベントビューアーから7001、7002のログを出力した後に打刻時間と照らし合わせるときにお使いください。
冗長で汚いコードですが、そんなに大きなデータを扱うわけでもないので、目的が達成できれば良いと思う方はご利用ください。
労基からの指示で勤務実態を調べたり、勤怠管理しろと言われた時とかに便利かもしれません。
[ できること ]
その日の最初のログと最後のログだけを抽出して、その時刻をまとめます。
[ コード ]
Sub kintai()Dim i As Integer
Dim n As Integer
Dim date_1 As Variant
Dim date_2 As VariantWith ActiveSheet
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("B1"), Order:=xlAscending
.Sort.SetRange .Range("A:F")
.Sort.Header = xlYes
.Sort.Apply
End With
n = 1
i = 2
date_1 = Year(Cells(i, 2)) & "-" & Month(Cells(i, 2)) & "-" & Day(Cells(i, 2))
date_2 = Year(Cells(i + 1, 2)) & "-" & Month(Cells(i + 1, 2)) & "-" & Day(Cells(i + 1, 2))
Do Until Cells(i + 1, 2) = ""
Cells(n, 10) = date_1
Cells(n, 11) = Hour(Cells(i, 2)) & ":" & Minute(Cells(i, 2))
n = n + 1
Cells(n, 10) = date_2
Cells(n, 11) = Hour(Cells(i + 1, 2)) & ":" & Minute(Cells(i + 1, 2))
n = n + 1
i = i + 1
date_1 = Year(Cells(i, 2)) & "-" & Month(Cells(i, 2)) & "-" & Day(Cells(i, 2))
date_2 = Year(Cells(i + 1, 2)) & "-" & Month(Cells(i + 1, 2)) & "-" & Day(Cells(i + 1, 2))
Do While date_1 = date_2
i = i + 1
date_1 = Year(Cells(i, 2)) & "-" & Month(Cells(i, 2)) & "-" & Day(Cells(i, 2))
date_2 = Year(Cells(i + 1, 2)) & "-" & Month(Cells(i + 1, 2)) & "-" & Day(Cells(i + 1, 2))
Loop
Loop
End Sub
[ 説明 ]
B列(日付情報)で並び替え
↓
日付情報から”年-月-日"だけ抽出
↓
隣接する行の”年-月-日"を比較して、違う日付だったらJ列に日付をK列に時刻をコピー
(これで例えば10月1日の最後の時刻と10月2日の最初の時刻をコピー。
以降10月2日の最後の時刻と10月3日の最初の時刻を…という感じで繰り返し)
↓
末尾まで繰り返し
[ 実行例 ]
以上です。ご参考までに。