Excel IFERROR & VLOOKUP - trap #N/A and other errors

  • これを共有
Michael Brown

このチュートリアルでは、IFERROR関数とVLOOKUP関数を一緒に使用して、さまざまなエラーをトラップして処理する方法について説明します。 さらに、複数のIFERROR関数を互いに入れ子にして、Excelで連続したVlookupを実行する方法について学びます。

ExcelのVLOOKUPとIFERROR、この2つの関数を単独で理解するのはもちろん、組み合わせてもなかなか難しいかもしれません。 この記事では、よくある使い方を取り上げ、数式の論理をわかりやすく説明した例をいくつかご紹介します。

IFERROR関数やVLOOKUP関数をあまり使ったことがない人は、上記のリンクを参考に、まずはその基本をおさらいしておくとよいかもしれません。

    IFERROR VLOOKUP式で#N/Aなどのエラーを処理する。

    Excel Vlookupでルックアップ値が見つからない場合、次のような#N/Aエラーが投げられます。

    ビジネスニーズによっては、独自のテキスト、ゼロ、または空白のセルでエラーを偽装することができます。

    例1.IFERRORをVLOOKUP式で独自のテキストに置き換えてみる

    標準のエラー表記を独自のテキストに置き換えたい場合は、VLOOKUP式をIFERRORで囲み、第2引数に好きなテキストを入力します( 値_if_error など)、"Not found "などと表示される。

    iferror(vlookup()の場合 ... ), "Not found")

    MainテーブルのB2にルックアップ値、Lookupテーブルのルックアップ範囲A2:B4で、数式は次のような形になります。

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "Not found")

    以下のスクリーンショットは、ExcelのIFERROR VLOOKUP式が動作している様子を示しています。

    その結果、よりわかりやすく、はるかに威圧感のないものになったのではないでしょうか?

    同様に、INDEX MATCHとIFERRORを併用することも可能です。

    =IFERROR(INDEX('Lookup table'!$B$2:$B$5,MATCH(B2,'Lookup table'!$A$2:$A$5,0)), "Not found")

    IFERROR INDEX MATCH式は、ルックアップ列の左側にある列から値を取り出し(左ルックアップ)、何も見つからなかったときに独自のテキストを返したい場合に特に有効である。

    例2.VLOOKUPを使ったIFERRORで、何も見つからなかったら空白または0を返すようにした場合

    ルックアップ値が見つからなかったときに何も表示したくない場合は、IFERRORに 空の文字列 (""):

    iferror(vlookup()の場合 ... ),"")

    この例では、次のような式になります。

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), "")

    見ての通り、ルックアップ値が検索リストにない場合は何も返しません。

    もし、このエラーを ゼロ値 の場合、最後の引数に0を入れる。

    =IFERROR(VLOOKUP(B2,'Lookup table'!$A$2:$B$5, 2, FALSE), 0)

    注意事項 ExcelのIFERROR関数は、#N/Aだけでなく、あらゆる種類のエラーを検出します。 これは良いのか悪いのか? 全てはあなたの目的次第です。 もし、起こりうるエラーをすべて隠したいなら、IFERROR Vlookupは最適な方法です。 しかし、多くの状況下では賢明ではない方法かもしれません。

    たとえば、テーブルのデータに名前付きの範囲を作成し、Vlookup式でその名前のスペルを間違えた場合、IFERRORは#NAME? エラーをキャッチして、「見つかりません」など、指定したテキストに置き換えます。 その結果、自分でタイプミスを発見しない限り、式が間違った結果を出していることに気づかないかもしれません。 このような場合、#N/Aエラーだけをトラップするより妥当なアプローチとなります。これには、Excel 2013 以降では IFNA Vlookup 式、すべての Excel バージョンでは IF ISNA VLOOKUP を使用します。

    要するに、VLOOKUP式のコンパネを選ぶときは、十分注意することです :)

    VLOOKUPの中にIFERRORを入れ、常に何かを見つけるようにする。

    次のような状況を想像してみてください。 リスト内の特定の値を探しても見つからない場合、どのような選択肢がありますか? N/Aエラーを取得するか、独自のメッセージを表示するかです。 実は、3つ目の選択肢があります。プライマリVlookupがつまずいた場合、確実に存在する他のものを検索するのです!(※)。

    この例をさらに進めて、特定のオフィスの内線番号を表示するダッシュボードのようなものをユーザー向けに作成してみましょう。 以下のようなものです。

    では、D2のオフィス番号に基づいて、B列から内線番号を引き出すにはどうすればよいのでしょうか。 この通常のVlookup式で。

    =vlookup($d$2,$a$2:$b$7,2,false)です。

    ユーザーがD2に有効な番号を入力する限り、うまく機能します。 しかし、ユーザーが存在しない番号を入力した場合はどうでしょうか? この場合は、中央オフィスに電話するようにします!このために、上記の数式を 価値 の引数IFERRORに別のVlookupを入れる。 値_if_error の議論になります。

    完全な処方は少し長いですが、完璧に機能します。

    =IFERROR(VLOOKUP("office"&$D$2,$A$2:$B$7,2,FALSE), VLOOKUP("セントラルオフィス",$A$2:$B$7,2,FALSE))。

    オフィス番号が見つかった場合、ユーザーは対応する内線番号を取得します。

    事業所番号が見つからない場合は、中央事業所の内線番号が表示されます。

    もう少しコンパクトな配合にするためには、別のアプローチもあります。

    まず、D2 の数値がルックアップカラムに存在するかどうかを確認します(ここでは、ルックアップカラムに col_index_num を1に設定すると、A列から値を検索して返す式になります):VLOOKUP(D2,$A$2:$B$7,1,FALSE)

    指定されたオフィス番号が見つからない場合は、ルックアップリストに確実に含まれている「セントラルオフィス」という文字列を検索します。 このために、最初のVLOOKUPをIFERRORでラップして、この組み合わせ全体を別のVLOOKUP関数内にネストします。

    =VLOOKUP(IFERROR(VLOOKUP(D2,$A$2:$B$7,1,FALSE), "central office"),$A$2:$B$7,2)

    まあ、ちょっと計算式が違うだけで、結果は同じなんですけどね。

    しかし、「中央オフィス」を調べる理由は何なのかと聞かれるかもしれません。 なぜIFERRORで直接内線番号を供給しないのでしょうか? なぜなら、内線番号が将来のある時点で変わるかもしれないからです。 そうなった場合、VLOOKUP式をそれぞれ更新することを気にせずに、ソーステーブルで一度だけデータを更新すればいいのです。

    Excelで連続したVLOOKUPを行う方法

    を行う必要がある場面では、いわゆる シーケンシャル または 連鎖 Excel の Vlookup は、前の検索が成功したか失敗したかに応じて、2 つ以上の IFERROR 関数をネストして、Vlookup を 1 つずつ実行します。

    iferror(vlookup()の場合 ... ), iferror(vlookup() ... ), iferror(vlookup() ... ), "Not found"))

    この式は、次のようなロジックで動作します。

    最初のVLOOKUPが何も見つからなければ、最初のIFERRORがエラーを捕らえ、別のVLOOKUPを実行する。 2番目のVLOOKUPが失敗すれば、2番目のIFERRORがエラーを捕らえ、3番目のVLOOKUPを実行するというように。 すべてのVlookupがつまずけば、最後のIFERRORがあなたのメッセージを返すというわけである。

    このネストされた IFERROR 式は、特に以下のような場合に有効です。 複数枚 のようになります。

    例えば、3つのワークシートに同質なデータのリストがあり(この例ではオフィス番号)、ある番号の内線番号を取得したいとします。

    ルックアップ値が現在のシートのセル A2 にあり、ルックアップ範囲が 3 つの異なるワークシート(北、南、西)の A2:B5 であると仮定すると、次の数式がうまく機能することになります。

    =IFERROR(VLOOKUP(A2,North!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,South!$A$2:$B$5,2,FALSE), IFERROR(VLOOKUP(A2,West!$A$2:$B$5,2,FALSE), "Not found"))...

    つまり、「連鎖したVlookups」式は、3つのシートをネストした順番に検索し、最初にマッチしたものを持ってくるのです。

    以上、ExcelのVLOOKUPでIFERRORを使う方法でした。 読んでいただきありがとうございました!来週のブログでお会いできるのを楽しみにしています。

    ダウンロード可能なもの

    Excel IFERROR VLOOKUP 計算式の例

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。