• 公開日:

Excel VBAでVLOOKUP関数のエラー回避をする方法

この記事では、Excel VBAでVLOOKUP関数のエラー回避をする方法をご紹介します。

VLOOKUP関数でデータ検索をする際、検索値が存在しない場合や検索範囲が間違っている場合などにエラーが返されますが、エラーだけでは意味が分かりづらいので文字列を返すことで意味が分かりやすくなります。

以下では、エラーの代わりに指定した文字列を返すVBAコードをご紹介します。

VLOOKUP関数のエラーを回避するコード

VBAを使って、関数のエラーを回避するコードを下記に記載するので、コピーして使用してください。

コードの使い方は、下記「VBAでVLOOKUP関数のエラー回避をする方法」セクションを参考にしてください。

Sub VLOOKUP関数でエラーが出た場合はデータなしを返す()
    Dim searchValue As Range
    Dim searchRange As Range
    Dim resultCell As Range

    Set searchValue = Range("D2")  ' 検索値
    Set searchRange = Range("A2:C6")  ' 範囲
    Set resultCell = Range("E2")  ' 結果を表示するセル

    On Error Resume Next ' エラーの場合の対処法
    resultCell.Value = Application.WorksheetFunction.VLookup(searchValue.Value, searchRange, 2, False)
    If Err.Number <> 0 Then  ' エラーナンバーが0以外の場合
        resultCell.Value = "データなし"  ' 結果のセルに「データなし」と表示する
    End If
    On Error GoTo 0  ' エラー回避を解除する
End Sub

上記のコードではVLOOKUP関数でエラーが発生した場合、結果のセルに「データなし」と表示します。

例えば検索値が検索範囲内に存在しない場合は通常「#N/Aエラー」が返されますが、上記のコードを使用すると「データなし」を返します。

「データなし」はダブルクォーテーション内を変えることで好きな文字列に変更可能です。

また、「検索値」と「範囲」と「結果を表示するセル」そして、VLOOKUP関数の引数に指定する「列番号」は、データ範囲に合わせて変更してください。

Excel VBAでVLOOKUP関数のエラー回避をする方法

VLOOKUP関数で何かしらのエラーが出た場合に「データなし」と表示するVBAコードを紹介します。

開発タブ、②Visual Basicの順に選択します。

「Microsoft Visual Basic for Applications」が開きました。①挿入タブ、②標準モジュールの順に選択します。

「標準モジュール」が開きました。上記セクション「VLOOKUP関数のエラーを回避するコード」をコピーして貼り付けてください。

作成したマクロを保存します。①ファイルタブ、②上書き保存の順に選択します。

「名前を付けて保存」ダイアログボックスが表示されました。①保存先(例:デスクトップ)を選択します。②ファイル名(例:VLOOKUP関数でエラーが出た場合はデータなしを返す)を入力し、③ファイルの種類でExcelマクロ有効ブックを選択し、④保存ボタンを押します。

Excelシートに戻ります。①開発タブ、③マクロの順に選択します。

「マクロ」ダイアログボックスが表示されました。①作成したマクロ(例:VLOOKUP関数でエラーが出た場合はデータなしを返す)を選択し、②実行ボタンを押します。

E2セルに指定した「データなし」の文字列を表示することができました。