🍉

VBAで突合処理を実装してみた

2024/06/23に公開

はじめに

業務でよく使用する突合処理を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