目次
このチュートリアルでは、ExcelのVLOOKUPでISERRORを使用して、あらゆる種類のエラーを生産的に処理する方法について見ていきます。
VLOOKUPは、多くの問題に悩まされるExcel関数の1つです。 どのテーブルを見ても、#N/Aエラーはよくあることで、#NAMEや#VALUEも時々現れます。 ISERRORとVLOOKUPを使用すると、起こりうるすべてのエラーをキャッチし、状況に最も適した方法で処理することができます。
VLOOKUPがエラーになるのはなぜですか?
VLOOKUPの計算式で最も多い間違いは #該当なし ルックアップ値が見つからない場合に発生します。 これは、さまざまな理由で発生する可能性があります。
- ルックアップ値がルックアップ配列に存在しない。
- ルックアップ値のスペルが間違っている。
- ルックアップ値またはルックアップ列の先頭または末尾にスペースがある。
- ルックアップカラムがテーブル配列の左端のカラムでない。
そのうえで、実行することができます。 #VALUE! また,関数名にスペルミスがあった場合は #NAME? というエラーが表示されます。
詳しくは、以前の記事「ExcelのVLOOKUPが機能しない理由」をご覧ください。
IF ISERROR VLOOKUP式でエラーをカスタムテキストに置き換える
VLOOKUPによって引き起こされる可能性のあるすべてのエラーを偽装するために、次のようにIF ISERROR式の中に配置することができます。
if(iserror(vlookup(...)), ") テキスト_if_error ", vlookup(...))例えば、Aグループの生徒がテストで不合格になった科目名を抜き出してみましょう。
=vlookup(a3, $d$3:$e$9, 2, false)
その結果、#N/Aエラーが大量に発生し、数式が破損しているような印象を与えてしまうかもしれません。
実際には、これらのエラーは、ルックアップ値(A3:A14)の一部がルックアップリスト(D3:D9)に見つからないことを示しているだけです。 この考えを明確に伝えるために、IF ISERROR構文でVLOOKUP式をネストしてください。
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "いいえ", VLOOKUP(A3, $D$3:$E$9, 2, FALSE))
これは、エラーをキャッチし、あなたのカスタムテキストメッセージを返します。
ヒントと注意点
- でうまく機能するのが最大の特長です。 全バージョン Excel 2000からExcel 365までのバージョンで、よりシンプルでコンパクトな代替ソフトが利用できます。
- ISERROR関数がキャッチする 百害あって一利なし ルックアップ値が見つからない場合(#N/Aエラー)だけカスタムメッセージを表示したい場合は、IF ISNA VLOOKUP(すべてのバージョン)またはIFNA VLOOKUP(Excel 2013以降)を使用します。
ISERROR VLOOKUPでエラー時に空白のセルを返すようにした
エラーが発生したときに空白のセルを表示するには、カスタムテキストの代わりに空の文字列("")を返すように数式を設定します。
if(iserror(vlookup(...)), "", vlookup(...))この場合、式はこのような形になります。
=if(iserror(vlookup(a3, $d$3:$e$9, 2, false)), "", vlookup(a3, $d$3:$e$9, 2, false))
結果は予想通り、ルックアップテーブルに生徒の名前がない場合は空白のセルが表示されます。
VLOOKUPのエラーをゼロやダッシュなどの文字に置き換えることもできます。 空文字列の代わりに、任意の文字を使用するだけです。
IF ISERROR VLOOKUP Yes/No 式
ある状況下で、何かを探しているが、マッチを引くのではなく、ただ単に はい (ルックアップ値が見つかった場合は他のテキスト)と いいえ (ルックアップ値が見つからない場合)。 それをさせるには、この一般的な数式を使用することができます。
if(iserror(vlookup(...)), ") テキスト_if_not_found ", " テキストが見つかれば ")今回のサンプルデータセットで、あるテストに落ちた生徒と落ちなかった生徒を知りたいとします。 そのためには、すでにおなじみのISERROR VLOOKUP式をIFの論理テストに出して、値が見つからなければ「いいえ」(ISERROR VLOOKUPは真を返す)、見つかったら「はい」(ISERROR VLOOKUPは偽を返す)を出力するよう指示してください。
=IF(ISERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "いいえ", "はい")
ISERROR VLOOKUPの代替品
IF ISERRORの組み合わせは、Excelでエラーを出さずにVlookupするための最も古くから実績のあるテクニックです。 時とともに新しい関数が進化し、同じタスクをより簡単に実行できるようになりました。 以下では、その他の可能な解決策と、それぞれの適用が最適である場合について説明します。
エラーVlookup
Excel 2007以降で利用可能
バージョン2007以降、ExcelにはIFERRORという特殊な関数があり、数式にエラーがないかチェックし、エラーが検出された場合は独自のテキストを返す(または別の数式を実行する)ことができるようになりました。
iferror(vlookup(...), ") テキスト_if_error ")現実の計算式は次の通りです。
=IFERROR(VLOOKUP(A3, $D$3:$E$9, 2, FALSE), "いいえ")
一見、IF ISERROR VLOOKUP式の短いアナログのように見えますが、本質的な違いがあります。
- IFERROR VLOOKUPは、エラーでなければ常にVLOOKUPの結果が欲しいと仮定しています。
- IF ISERROR VLOOKUPでは、エラーの場合に何を返すか、エラーがない場合に何を返すかを指定することができます。
詳しくは、ExcelのVLOOKUPでIFERRORを使用するをご覧ください。
がVlookupでない場合
Excel 2000以降で動作します。
他のエラーをキャッチせずに#N/Aだけをトラップしたい場合、ISNA関数が便利です。 構文はIF ISERROR VLOOKUPと同じです。
if(isna(vlookup(...)), ") テキスト_if_error ", vlookup(...))しかし、ある状況下では、この一見同じように見える数式が、異なる結果を生み出すことがあります。
=IF(ISNA(VLOOKUP(A3, $D$3:$E$9, 2, FALSE)), "いいえ", VLOOKUP(A3, $D$3:$E$9, 2, FALSE))
下の画像では、セルA13にたくさんの末尾スペースがあり、ルックアップ値の合計が255文字を超えています。 その結果、数式は#VALUE!エラーを引き起こし、そのセルに注意を向けて理由を調べるように促します。 ISERROR VLOOKUPはこの場合「いいえ」を返し、問題を不明瞭にして全く間違った結果をもたらすだけでしょう。
使用するとき。
この式は、ルックアップ値が見つからない場合にのみテキストを表示したい場合、VLOOKUP式自体の根本的な問題を隠蔽したくない場合、例えば、関数名の入力ミス(#NAME?)やルックアップワークブックのフルパスが指定されていない場合(#VALUE!)などに見事に効果を発揮します。
詳しくは、ExcelのISNA関数(計算式例付き)をご覧ください。
IFNA VLOOKUP
Excel 2013以降で利用可能
IF ISNAの組み合わせを現代的に置き換えたもので、#N/Aエラーをより簡単に処理することができます。
ifna(vlookup(...), " テキスト_if_error ")ここでは、IF ISNA VLOOKUPの式に相当する略記法を紹介します。
=IFNA(VLOOKUP(A3, $D$3:$E$9, 2, FALSE), "いいえ")
使用するとき。
最新バージョンのExcel(2013~365)で#N/Aエラーをトラップして処理するための理想的なソリューションです。
詳しくは、Excel IFNAの機能をご覧ください。
XLOOKUP
Excel2021、Excel365で対応
XLOOKUP関数は、内蔵の「ifエラー」機能により、Excelで#N/Aエラーなしに検索する最も簡単な方法です。 単純に、オプションの第4引数にユーザーフレンドリーなテキストを入力してください。 if_not_found .
例えば、こんな感じです。
=XLOOKUP(A3, $D$3:$D$9, $E$3:$E$9, "No")。
制限事項:#N/Aエラーのみを検出し、その他のタイプは無視されます。
詳しくは、ExcelのXLOOKUP関数をご覧ください。
このように、ExcelにはVLOOKUPエラーを回避するための様々なオプションが用意されています。 このチュートリアルで、それらを効果的に使用する方法をご紹介できたと思います。 読んでくださってありがとうございました。また、来週のブログでお会いしましょう
ダウンロード可能なもの
VLOOKUPを使ったISERRORの例(.xlsxファイル)