ファイルの結合の項目チェックをするVBA!
ファイルの項目がInputファイル、outputファイルに存在するかを調べる
INPUTファイルから、OUTPUTファイルを作りますよね。それなのに、OUTPUTファイルの項目に、INPUTファイルの項目が無いという現実(´;ω;`)。
こんな事態を打破すべく、ExcelVBAでチェックツールを作りました。
1 閲覧対象者
INPUTファイルとOUTPUTファイルの項目名が違うとお怒りの方w
2 得られる効果
OUTPUTファイルにINPUTファイルの項目が無いものを特定できる!
3 設計
1 以下の写真の通り、2つのINPUTファイルから1つのUnionファイル(OUTPUTファイル)を作成します。
2 以下の写真の通り、マクロ「結合比較を実施します」
3 以下の写真の通り、列F「判定」にINPUTファイルに含まれるものは「項目有」と表示される。空白のものが、INPUTファイルに項目が無いものとなる。
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つのファイルを作るなどには対応していません。
そこらへんは改良が必要ですが、取り急ぎ業務改善に必要なコードを作ってみました。
私も別のパータンが出てきたら、改良を加えるつもりです。
ではでは、この辺で(^^)/~~~