EXCEL VBA テクニック 2つのデータを検索・照合して元データに無いデータを追記します。
●はじめに
ここでは、2つのデータを検索・照合し元データと追加データを比較して、元データに無い追加データを元データの最終行に追加するプログラムです。マスターデータを管理するなど、元データに無いデータを新たに追加する時などに、使用すると便利です。
●プログラム説明(事前)
プログラムの説明ですが、AB列に元データ、EF列に追加データがあります。このデータを比較してAB列に無いデータをEF列からAB列の最終行に追加します。
AB列・EF列共に存在するデータについては、データは追加されません。
●実行前 ※A・B列は元となるデータ一覧・E・F列は、A・B列に無いものは、追加対象となります。(クリックして拡大)
●プログラム説明
下記のプログラムは、2つのデータを検索・照合して元データに追記するプログラムになります。
※注意:下記のプログラムをコピーして利用する場合は、シート名を指定していますので、必ず、シート名を「Sheet1」にして下さい。
Sub 検索追記() '
Dim ws01 As Worksheet
Dim HIKAKU As Range
Dim KEN01, KEN02, TSUIKA, i As Long
Set ws01 = Worksheets("Sheet1") 'ワークシートの設定
KEN01 = ws01.Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を設定する
KEN02 = ws01.Cells(Rows.Count, "F").End(xlUp).Row 'F列の最終行を設定する。
TSUIKA = KEN01 + 1 'B列の追加する行を指定します。
For i = 2 To KEN02
Set HIKAKU = ws01.Columns("B").Find(What:=ws01.Cells(i, "F"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
'B列とF列を比較する。
If HIKAKU Is Nothing Then '比較して無い場合は、下記を実行
ws01.Cells(TSUIKA, "A") = ws01.Cells(i, "E") '追加する文字を転記する。(コード)
ws01.Cells(TSUIKA, "B") = ws01.Cells(i, "F") '追加する文字を転記する。(都道府県)
ws01.Range("B" & TSUIKA).Interior.ColorIndex = 6 '追加した都道府県名を塗りつぶす(黄色)
TSUIKA = TSUIKA + 1 '追加する件数毎に+1加算する。(追加行)
End If
Next i 'F列データの最終行までループ
ws01.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous '罫線を引きなおす。
End Sub
●実行後 ※元のデータとして一覧に無かった秋田・神奈川が追加されました。(クリックして拡大)
●実行結果
実行結果の説明ですが、A・B列とE・F列のデータを比較して、A・B列に無くてE・F列にあるデータは、「秋田」と「神奈川」になりますので、A・B列の最終行に2つのデータが追加されました。今回は、数の少ないデータ同士での検索・追加処理を行いましたが、1000件や10000件またそれ以上のデータを一つのマスターデータとしてまとめる時など便利なので、プログラムを参照して活用して下さい。
最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。