ファイルの結合の項目チェックをするVBA!

ファイルの項目がInputファイル、outputファイルに存在するかを調べる

f:id:bimori466:20210228082517p:plain

INPUTファイルから、OUTPUTファイルを作りますよね。それなのに、OUTPUTファイルの項目に、INPUTファイルの項目が無いという現実(´;ω;`)。
こんな事態を打破すべく、ExcelVBAでチェックツールを作りました。

1 閲覧対象者

INPUTファイルとOUTPUTファイルの項目名が違うとお怒りの方w

2 得られる効果

OUTPUTファイルにINPUTファイルの項目が無いものを特定できる!

3 設計

1 以下の写真の通り、2つのINPUTファイルから1つのUnionファイル(OUTPUTファイル)を作成します。
f:id:bimori466:20210228080416p:plain


2 以下の写真の通り、マクロ「結合比較を実施します」
f:id:bimori466:20210228080634p:plain


3 以下の写真の通り、列F「判定」にINPUTファイルに含まれるものは「項目有」と表示される。空白のものが、INPUTファイルに項目が無いものとなる。
f:id:bimori466:20210228080758p:plain

4 コードの解説

<マクロ結合比較のコード>

Sub 結合比較()

    Dim ws As Worksheet: Set ws = Worksheets("結合比較")
    
    Dim input1 As Long: input1 = ws.Cells(Rows.Count, 1).End(xlUp).Row
    Dim input2 As Long: input2 = ws.Cells(Rows.Count, 3).End(xlUp).Row
    Dim Union_output As Long: Union_output = ws.Cells(Rows.Count, 5).End(xlUp).Row
    
    Dim serchItem As String
    Dim compItem As String
    Dim endFlg As Boolean
    
    
    'inputファイル1を探す
    Dim k_serchItem As Long
    For k_serchItem = 2 To Union_output
        endFlg = False
        serchItem = ws.Cells(k_serchItem, 5)
        
        Dim k_input1 As Long
        For k_input1 = 2 To input1
            compItem = ws.Cells(k_input1, 1)
            
            If serchItem = compItem Then
                ws.Cells(k_serchItem, 6) = "項目有"
                endFlg = True
                Exit For
            End If
            
        Next
        
        
        'inputファイル1に無い場合、Input2を探す
        If endFlg = False Then
            Dim k_input2 As Long
            For k_input2 = 2 To input2
                compItem = ws.Cells(k_input2, 3)
                
                If serchItem = compItem Then
                    ws.Cells(k_serchItem, 6) = "項目有"
                    endFlg = True
                    Exit For
                End If
            Next
        End If
    Next
    
End Sub


単純なコードです。
For~NEXTでファイル1を検索し、その次にファイル2を検索する。
項目があれば、列Fに”項目有”と表示して、endFlgをTrueにする。この処理を繰り返す。

5 感想

この設計の場合、2つのファイルから1つのOUTPUTファイルを作る場合に限定されてしまします(;^ω^)。
3つのファイルから、2つのファイルを作るなどには対応していません。
そこらへんは改良が必要ですが、取り急ぎ業務改善に必要なコードを作ってみました。
私も別のパータンが出てきたら、改良を加えるつもりです。


ではでは、この辺で(^^)/~~~