Excel VBA(エクセル マクロ) そのE VLOOKUPで検索、取り込み

Excelで重宝するVLOOKUP関数。
VBAで使わない手は無い。

外部ファイルから必要情報のみ取り込むことに成功した。

次は、VLOOKUP関数を使用して、他シートの行を検索し、行にある情報を取り込むことにする。

VLOOKUP関数はExcelの関数で非常に使う機能であるため、VBAで使わない手はない。

全ての行について、VLOOKUP関数で検索をかけるため以下のようにプログラムを作成した。

Sheets("データシート").Select
Line = 2
Do Until Cells(Line, 4).Value = ""

  On Error Resume Next
Cells(Line, 17).Value = Application.WorksheetFunction.VLookup(Cells(Line, 4).Value, Worksheets("検索シート").Range("D2:Q1000"), 14, 0)
On Error GoTo 0
If Cells(Line, 17).Value = "" Then
Cells(Line, 17).Value = "データにありません"
End If
Line = Line + 1
Loop

VBAでのVLOOKUP関数は以下のように使用する。

Cells(Line, 17).Value = Application.WorksheetFunction.VLookup(Cells(Line, 4).Value, Worksheets("検索シート").Range("D2:Q1000"), 14, 0)

通常使用しているVLOOKUPの前に、Application.WorksheetFunction.をつけて使用する。後は、通常のExcel関数と同様に、Cells(Line, 4).Valueの値について、Worksheets("検索シート").Range("D2:Q1000")で検索して、検索した行の左端から14番目の値を算出している。最後の0は「FALSE」を意味し、完全一致とした。1(true)の時は部分一致となる。

算出結果をセルの値(Cells(Line, 17).Value)に検索結果を代入する。

Line=2
Do Until Cells(Line, 4).Value = ""
Loop

で、4列目(D行)の2行目から値がなくなるまでVLOOKUPを実行する。

VLOOKUPで検索されないとエラーとなるため、エラーとなっても次に進むように

On Error Resume Next

をVLOOKUP関数の前に挿入。

VLOOKUP関数が終われば、エラーが発生したら止まるようにするため、

On Error GoTo 0

を挿入する。

検索されなかったときの処理として、

If Cells(Line, 17).Value = "" Then
Cells(Line, 17).Value = "データにありません"
End If

を挿入し、「データにありません」を書き込むこととした。

Line = Line + 1

で次の行にいき、Do Until Cells(Line, 4).Value = ""で最後の行まで検索するようにした。

VBAでのVLOOKUP関数の意義は、外部シートからデータを取り込んで、そこにVLOOLUP関数を埋め込めることができるため、自動化が可能となる。

また、一つのセルに複数のVLOOKUPの検索値を比較して入れたいとき、VBAで複雑な処理が可能となった。

やっぱり、1ボタンでコピーから検索値の挿入まで行ってくれるのはありがたい。

しかし、VLOOKUP関数には検索値のデータ型が合わず、なかなか検索してくれない苦労があった。

解消法についてはそのFで。
忍者Admaxのテキスト広告で収入UP!

実践!ExcelデータベースTOP