エクセルVBAにてご教授をお願い致します。 簡易的な出退勤の確認リストにて一括で打刻間違いを確認したいです。 A列に日付時間、B列に氏名、C列に出勤Or退勤が入っています。

画像

Excel | Visual Basic179閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ご回答有難うございます。 For i = 0 To UBound(stbl, 2) - 1 ck = False For j = 0 To UBound(etbl, 2) - 1 If stbl(0, i) = etbl(0, j) And stbl(3, i) = "" And etbl(3, j) = "" _ And etbl(1, j) > stbl(1, i) + TimeSerial(12, 0, 0) Then stbl(3, i) = 1 etbl(3, j) = 1 ck = True Exit For End If Next j Next i 上記記述をコメントアウトしたら重複の確認はできましたがこの部分も入れ実行すると実データでは重複以外のものも確認となってしまいます。

画像

ThanksImg質問者からのお礼コメント

長いやり取り感謝致します。思うような処理ができました!! 有難うございました!

お礼日時:2021/12/8 13:33

その他の回答(2件)

0

マクロの関数でのプログラムでないため馴染めないかもしれませんが、参考のため回答させてもらいます。 プログラムは以下の通りです。 実行結果の図を添付致します。 Sub Sheet5_ボタン3_Click() For n0 = 2 To 1000 If Cells(n0, 1).Value = "" Then Exit For Else For n1 = 1 To 1000 If Cells(n0 + n1, 1).Value = "" Then Exit For ElseIf Cells(n0 + n1, 2).Value = Cells(n0, 2).Value _ And Cells(n0 + n1, 3).Value = Cells(n0, 3).Value Then If Cells(n0 + n1, 1).Value - Cells(n0, 1).Value < 0.5 _ And Cells(n0 + n1, 1).Value - Cells(n0, 1).Value > -0.5 Then Cells(n0, 4).Value = "確認" Cells(n0 + n1, 4).Value = "確認" Range(Cells(n0, 1), Cells(n0, 4)).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Range(Cells(n0 + n1, 1), Cells(n0 + n1, 4)).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With End If End If Next End If Next End Sub

画像
0

日をまたいで出勤、退勤はあるのでしょうか? たとえば 12/12 23:00 退勤 12/13 1:00 退勤 というようなパターンもあれば、それも赤くする?

重複もさることながら、出勤(退勤)があって退勤(出勤)がない、というパターンもあり得ると思います。 なので、出勤ー退勤ー出勤ー退勤ーのパターンがくずれているところをチェックしたほうがいいと思いますが、いかがでしょうか。