🍉
VBAで突合処理を実装してみた
はじめに
業務でよく使用する突合処理をExcel VBAで実装しました。
勤務時間データ
勤務時間のデータを画像のように作成しました。
社員名簿
社員名簿を画像のように作成しました。
突合処理のソースコード
Option Explicit
'突合処理テスト
'新規作成 2024/6/23
Sub chech1()
'ワークブックの定義
Dim wb As Workbook
Set wb = Workbooks(ThisWorkbook.Name)
'ワークシートの定義
Dim ws1, ws2 As Worksheet
Dim sh_name1, sh_name2 As Variant
sh_name1 = "勤務時間"
sh_name2 = "社員データ"
Set ws1 = wb.Worksheets(sh_name1)
Set ws2 = wb.Worksheets(sh_name2)
'各シートの開始行と終了行の定義
Dim start_num1, end_num1 As Integer
Dim start_num2, end_num2 As Integer
start_num1 = 3
start_num2 = 3
end_num1 = ws1.Cells(Rows.Count, 2).End(xlUp).row
end_num2 = ws2.Cells(Rows.Count, 2).End(xlUp).row
'ヒットカウント変数の定義
Dim correct_num As Integer
Dim i, j As Integer
'勤務表と社員名簿の突合処理
For i = start_num1 To end_num1
Dim data1 As String
correct_num = 0
data1 = ws1.Cells(i, 2).Value
For j = start_num2 To end_num2
Dim employee_name As String
employee_name = ws2.Cells(j, 2).Value
If data1 = employee_name Then
correct_num = 1
End If
Next j
'ヒットカウントが1なら「OK」、それ以外なら「NG」を列に追記する
If correct_num = 1 Then
ws1.Cells(i, 4).Value = "OK"
Else
ws1.Cells(i, 4).Value = "NG"
End If
Next i
End Sub
実行結果
実行結果は下記の画像です。
最後に
vlookup関数でもできますが、VBAでコーディングしてみました。
Discussion