- 公開日:
ExcelのVLOOKUPとIFERRORを組み合わせて複数条件にする
この記事では、ExcelのVLOOKUPとIFERRORを組み合わせて複数条件にする方法をご紹介します。
VLOOKUP関数にIFERROR関数を組み合わせることで、VLOOKUP関数でエラーが発生した場合に特定の文字を返したり別の列を検索したりすることができます。
以下では、エラーが発生した場合に処理方法を指定するVLOOKUP関数とIFERROR関数の使い方をご紹介します。
ExcelのVLOOKUPとIFERRORを組み合わせて複数条件にする方法
以下では、VLOOKUPの条件を複数にするIFERROR関数の使い方を4つご紹介します。
- 指定した範囲に検索値がない場合は別の列を検索する方法
- 指定したシート範囲に検索値がない場合は別シートを検索する方法
- エラーの場合は空白で返す方法
- エラーの場合は指定した文字列で返す方法
指定した範囲に検索値がない場合は別の列を検索する方法

VLOOKUP関数使う際、通常では指定できる範囲は1つだけですが、IFERR0R関数を組み合わせることで「A列にない場合はB列を検索する」という複数条件を指定することができます。
上記の画像の例では、G列に入力した検索値をA列で検索して、該当する検索値がない場合はD列を検索します。どちらの列にも検索値がない場合は「該当なし」の文字列を返します。
以下の記事「ExcelのVLOOKUP関数でエラーを表示しない(非表示)方法」セクションで、範囲を複数指定するVLOOKUP関数とIFERROR関数の使い方をご紹介しています。
ExcelのVLOOKUP関数でエラーを表示しない(非表示)方法
指定したシート範囲に検索値がない場合は別シートを検索する方法

上記の画像の「注文票」シートの商品名と単価は、商品コードに紐づく値を「野菜」シート、「果物」シートから抽出しています。
以下では、「注文」シートの商品コードを検索値として「野菜」シートで検索し、検索値が存在しない場合は「果物」シートに移動して検索値を探すように条件を指定するVLOOKUP関数とIFERROR関数の使い方をご紹介します。

①「注文票」シートのB2セルに「=IFERROR(VLOOKUP(」を入力して、②検索値(例:A2セル)を選択し、カンマで区切ります。
IFERROR関数は指定した数式の結果がエラーの場合は空白や文字列を指定することができ、エラーでない場合は数式の結果を返します。書式は「=IFERROR(値,エラーの場合の値)」です。
引数の説明や使い方などは、以下の記事でご紹介しています。
ExcelのIFERROR関数の使い方|エラーの場合に指定した値を返す

①「野菜」シートに移動します。②範囲に指定する列の列番号(例:A列からC列)を選択して、カンマで区切ります。

列番号を指定します。
抽出したい「商品名」は左から数えて2列目にあるので、数式バーに2を入力して、カンマで区切ります。

検索方法を指定します。
今回は完全一致した値を抽出したいので「FALSE)」を入力して、カンマで区切ります。

カンマに続いて、「VLOOKUP(」を入力します。

①「注文」シートに移動します。②検索値(例:A2セル)を選択し、カンマで区切ります。

①「果物」シートに移動します。②範囲に指定する列の列番号(例:A列からC列)を選択して、カンマで区切ります。

列番号を指定します。
抽出したい「商品名」は左から数えて2列目にあるので、数式バーに2を入力して、カンマで区切ります。

検索方法を指定します。
今回は完全一致した値を抽出したいので「FALSE))」を入力して、Enterを押します。

「注文票」シートのB2に玉ねぎが表示されました。
B2セルの数式バーを選択して、上記の画像の赤枠で囲った検索値と範囲を「$」で固定します。
検索値(例:A2セル)は、列だけを固定したいのでAの前に「$」を付けます。
範囲は変わらないので「$」を付けてコピーした際にずれないようにします。
適切な位置を固定すると、B2セルの数式は「=IFERROR(VLOOKUP($A2,野菜!$A:$C,2,FALSE),VLOOKUP(注文票!$A2,果物!$A:$C,2,FALSE))」になります。
適切な位置を固定できたら、表全体に数式をコピーしていきます。

B2セルのフィルハンドルをドラッグして数式をコピーします。

C2セルに「単価」¥50を抽出したいところ、「商品名」玉ねぎが表示されてしまいました。
VLOOKUP関数の列番号はコピーしても可変しないので、単価を抽出するには手動で列番号を入れ変える必要があります。

C2セルの数式バーを選択して、上記の画像の赤枠で囲った列番号を「3」に入れ替えます。
C2セルの数式は「=IFERROR(VLOOKUP($A2,野菜!$A:$C,3,FALSE),VLOOKUP(注文票!$A2,果物!$A:$C,3,FALSE))」になります。

C2セルに¥50が表示されました。
①B2セルとC2セルを選択して、②フィルハンドルをドラッグして数式をコピーします。

「注文票」シートに検索結果を表示できました。
VLOOKUP関数とIFERROR関数を組み合わせることで、引数に指定した別シートの範囲内に検索値がない場合は、次のシートを検索することができます。
エラーの場合は空白で返す方法
VLOOKUP関数の結果で検索値がない場合などにエラーが表示されることがあります。
個人でシートを編集している場合はそのままでも問題ありませんが、複数人で共有してる場合は、エラーが表示されていると検索結果が正しく行われていないと誤解されてしまう可能性があります。
以下の記事「エクセルで#N/Aを表示しない方法」セクションで、エラーが表示された場合に空白で返すVLOOKUP関数とIFERROR関数の使い方をご紹介しています。
エラーの場合は指定した文字列で返す方法
VLOOKUP関数の結果で検索値がない場合などにエラーが表示されることがあります。
例えば在庫管理表でVLOOKUP関数を使用している際、在庫数を検索して該当する商品がない場合に「#N/A」が表示されるより「在庫なし」などの言葉で表現することで、どういう状況なのかが一目で判断できます。
以下の記事「様々なエラーを指定した文字列で返して#N/Aエラーを表示させない方法」セクションで、エラーが表示された場合に指定した文字列で返すVLOOKUP関数とIFERROR関数の使い方をご紹介しています。