大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、VLookup関数を使う際の「エラーを回避」する方法についてご紹介します。「WorksheetFunction」を使う場合は「On Error Resume Next」を使います。「数式埋め込み」を使う場合は「IFERROR関数」を使うと便利です。

はじめに

この記事では、VBAでVLookup関数を使うときに「エラーを回避」する方法について、ご紹介します。

「WorksheetFunction」を使いたい場合は、「On Error Resume Next」を使います。

エラーの処理とエラー回避のリセットのために、「Err.Number」と「On Error Goto 0」も合わせてマスターしましょう。

「埋め込み数式」を使う場合は「IFERROR関数」を使うと「エラー回避」ができます。

VBAでVLookup関数を使いこなしていきましょう。

では、VBAでVLookup関数を使うときに「エラーを回避」する方法について、解説していきます。

この記事で紹介すること

  • VBAでVLookup関数を使うときに「エラーを回避」する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

VLookup関数を使う際に「エラー回避」するVBAコードについて、まとめています。

VBAコードだけを確認したい場合に、ご活用ください。

'「WorksheetFunction」を使う場合

On Error Resume Next 'エラーを無視する
Range("D2") = WorksheetFunction.VLookup("G", Range("A2:B15"), 2, False) 'エラーを出す
If Err.Number > 0 Then Range("D2") = "エラー" 'エラーがある場合
On Error GoTo 0 'これ以降エラーを表示する

'「埋め込み数式」を使う場合

Range("D2") = "=IFERROR(VLOOKUP(""GGGG"",A2:B10,2,FALSE),""エラー"")" '「IFERROR」を使う
Range("D2").Value = Range("D2").Value '値に変換

では、解説していきます。

WorksheetFunctionでVLookupを使う場合のエラー回避

「WorksheetFunction」でVLookupを使う場合のエラー回避の方法をみてみます。

検索した結果がない場合エラーとなる

「WorksheetFunction」で「VLookup」を使って検索すると、「結果がない場合」エラーとなります。

表にない「"GGGG"」を検索してみます。

Sub TEST1()
    
    '検索結果がない場合エラーとなる
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
End Sub

次の表を使います。

表にない「"GGGG"」で検索

表にない「

では、VBAコードを実行してみます。

エラーになる

エラーになる
エラーになる

という感じで、エラーになっちゃいます。

「On Error Resume Next」でエラーを回避する

「On Error Resume Next」を使うとエラーを無視することができます。

エラーが発生するVBAコードの前に記載します。

Sub TEST2()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
End Sub

表にない「"GGGG"」で検索してみます。

表にない「"GGGG"」で検索

表にない「

では、VBAコードを実行してみます。

「On Error Resume Next」でエラーを回避

「On Error Resume Next」でエラーを回避

「On Error Resume Next」でエラーを回避できました。

エラーは発生していません。

「Err.Number > 0」でエラー時の文字を設定

「Err.Number>0」を使うと、エラー時の文字を設定することができます。

エラーを回避するだけではあまり使えないので、エラーが発生している場合の処理をしたいですよね。

エラーが発生した場合は、「Err.Number」が「0より大きく」なります。

これを利用します。

Sub TEST3()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
    'エラーがある場合
    If Err.Number > 0 Then
        Range("D2") = "エラー"
    End If
    
End Sub

表にない「"GGGG"」で検索してみます。

表にない「"GGGG"」で検索

表にない「

では、VBAコードを実行してみます。

エラーの場合は任意の文字を入力

エラーの場合は任意の文字を入力

「エラー」という文字を入力できました。

こんな感じで、エラーが発生した場合の処理をすることができます。

「On Error Goto 0」でエラー回避をリセット

「On Error Goto 0」でエラーを検出するようにできます。

エラーが発生しないままにしておくと、エラーを発生してほしいところでも、表示してくれないので不便になってしまいます。

なので、エラーを利用するところ以外では、通常どおりエラーを発生するようにします。

「On Error Resume Next」をリセットしないとエラーがでない

「On Error Resume Next」をリセットしないで次のVBAコードを実行してみます。

Sub TEST4()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
    Cells(0, 0) = 1 '←本当はエラー
    
End Sub

では、VBAコードを実行してみます。

「On Error Resume Next」をリセットしないとエラーがでない

エラーが出てほしいところで、出てないですね。

こんな感じで、「On Error Resume Next」をリセットしないとエラーがでないままとなってしまいます。

「On Error Goto 0」でリセットする

「On Error Goto 0」でエラー回避をリセットします。

Sub TEST5()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
    'これ以降エラーを表示する
    On Error GoTo 0
    
    Cells(0, 0) = 1 '←エラーを出してくれる
    
End Sub

では、VBAコードを実行してみます。

「On Error Goto 0」でリセットしてエラーを検出できるようにする
「On Error Goto 0」でリセットしてエラーを検出できるようにする

「On Error Goto 0」でリセットしてエラーを検出できるようになりました。

「On Error Resume Next」と「On Error Goto 0」はセットで使いましょう。

エラー対策をまとめてみる

エラー対策をまとめて、VLookkupで検索してみます。

エラー対策をして「"GGGG"」で検索

Sub TEST6()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
    
    'エラーがある場合
    If Err.Number > 0 Then
        Range("D2") = "エラー"
    End If
    
    'これ以降エラーを表示する
    On Error GoTo 0
    
End Sub

エラー対策をして表にない「"GGGG"」で検索してみます。

エラー対策をして表にない「

では、VBAコードを実行してみます。

任意の文字を入力

エラー対策をして、任意の文字を入力できました。

エラー対策をして「"G"」で検索

もちろん通常の検索もできます。

Sub TEST7()
    
    'エラーを無視する
    On Error Resume Next
    
    'エラーを出す
    Range("D2") = WorksheetFunction.VLookup("G", Range("A2:B15"), 2, False)
    
    'エラーがある場合
    If Err.Number > 0 Then
        Range("D2") = "エラー"
    End If
    
    'これ以降エラーを表示する
    On Error GoTo 0
    
End Sub

エラー対策をして「"G"」で検索してみます。

エラー対策をして「

では、VBAコードを実行してみます。

検索値があるので価格を取得できた

検索値があるので価格を取得できました。

埋め込み数式でVLookupを使う場合のエラー回避

「埋め込み数式」でVLookupがエラーになる場合の対策をやってみます。

使うものは「IFERROR関数」です。

埋め込み数式の場合は簡単ですね。

数式の結果がエラーとなる

埋め込み数式で「VLookup関数」を使って検索値がない場合、「エラー値」となります。

Sub TEST8()
    
    '検索結果がない場合
    Range("D2") = "=VLOOKUP(""GGGG"",A2:B10,2,FALSE)"
    Range("D2").Value = Range("D2").Value '値に変換
    
End Sub

表にない「"GGGG"」で検索してみます。

表にない「"GGGG"」で検索

表にない「

では、VBAコードを実行してみます。

入力がエラーとなる

入力がエラーとなる

入力がエラーとなりました。

IFERROR関数を使う

「数式埋め込み」のVLookupのエラー回避は、「IFERROR関数」を使います。

「IFERROR関数」を使う

「IFERROR関数」を使うとこんな感じになります。

Sub TEST9()
    
    '「IFERROR」を使う
    Range("D2") = "=IFERROR(VLOOKUP(""GGGG"",A2:B10,2,FALSE),""エラー"")"
    Range("D2").Value = Range("D2").Value '値に変換
    
End Sub

表にない「"GGGG"」で検索してみます。

表にない「

では、VBAコードを実行してみます。

任意の文字を表示させる

エラー回避をして、任意の文字を表示できました。

通常の検索もできる

もちろん通常の検索もできます。

「"G"」で検索してみます。

Sub TEST10()
    
    '「IFERROR」を使う
    Range("D2") = "=IFERROR(VLOOKUP(""G"",A2:B10,2,FALSE),""エラー"")"
    Range("D2").Value = Range("D2").Value '値に変換
    
End Sub

通常の検索をしてみます。

通常の検索をする

では、VBAコードの結果をみてみます。

検索値に一致したセルの価格を取得できた

検索値に一致したセルの価格を取得できました。

こんな感じで「埋め込み数式」を使う場合は「IFERROR関数」が使えます。

おわりに

この記事では、VBAでVLookup関数を使うときに「エラーを回避」する方法について、ご紹介しました。

「WorksheetFunction」を使いたい場合は、「On Error Resume Next」を使います。

エラーの処理とエラー回避のリセットのために、「Err.Number」と「On Error Goto 0」も合わせてマスターしましょう。

「埋め込み数式」を使う場合は「IFERROR関数」を使うと「エラー回避」ができます。

VBAでVLookup関数を使いこなしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す