ExcelのISERROR関数と計算式の例

  • これを共有
Michael Brown

このチュートリアルでは、ExcelのISERROR関数の実用的な使い方に注目し、さまざまな計算式にエラーがないかどうかをテストする方法を紹介します。

Excel が理解できない、あるいは計算できない数式を書いた場合、Excel はエラーメッセージを表示して問題に注意を促します。 ISERROR 関数は、エラーを検出し、エラーが見つかった場合に代替手段を提供するのに役立ちます。

    ExcelのISERROR関数

    ExcelのISERROR関数は、#CALC!, #DIV/0!, #N/A, #NAME?, #NUM!, #NULL!, #REF!, #VALUE!, そして#SPILL! など、あらゆるエラーを検出します。 結果はブール値で、エラーが検出されれば「真」、それ以外は「偽」です。

    この機能は、Excel 2000から2021までのすべてのバージョンとExcel 365で使用できます。

    ISERROR関数の構文は、次のように簡単です。

    イセロー

    どこ 価値 は、エラーチェックの対象となるセル値または数式です。

    エクセル ISERROR 数式

    ISERROR式を最も単純な形で作成するには、エラーをテストしたいセルへの参照を指定します。 たとえば、次のようになります。

    =ISERROR(A2)

    エラーが見つかった場合はTRUEを、テストしたセルにエラーがない場合はFALSEを返します。

    ExcelのIF ISERROR式

    エラー発生時に独自のメッセージを返したり、別の計算を行うには、IF関数と一緒にISERRORを使用します。 一般的な式は次のようになります。

    IF(ISERROR()の場合 (...), テキストまたは計算の失敗 , ())

    人間の言葉に置き換えると、「メインの計算式の結果がエラーになった場合は、指定されたテキストを表示するか、別の計算を実行し、そうでない場合は、計算式の正常な結果を返す」ということです。

    下の画像では、合計を数量で割ると、いくつかの誤差が生じます。 価格 の欄があります。

    すべての異なるエラーコードをカスタムテキストに置き換えるには、次の IF ISERROR 式を使用します。

    =IF(ISERROR(A2/B2), "Unknown", A2/B2)

    Excel 2007 以降のバージョンでは、内蔵の IFERROR 関数を使用することで、同じ結果を得ることができます。

    =IFERROR(A2/B2, "Unknown")

    IFERRORは、A2/B2の計算を一度だけ行うので、少し速く実行できることに注意してください。 一方、IF ISERRORは、最初にエラーが発生するかどうか、次にテストがFALSEになった場合にもう一度計算を行うので、二度計算することになります。

    IF ISERROR VLOOKUP式

    VLOOKUPでISERRORを使用することは、実際には、上記のIF ISERROR式の特殊なケースです。 VLOOKUP関数が検索値を見つけられない場合、またはその他の理由で失敗した場合、この構文を使ってカスタム・テキスト・メッセージを表示します。

    if(iserror(vlookup(...)), ") カスタムテキスト ", vlookup(...))

    この例では、ルックアップテーブル (D3:E10) からメインテーブル (A3:B15) に時間を引き出します。 ルックアップ値 (参加者の名前) がルックアップテーブルに存在しない場合、「Not qualified」を返します。

    =IF(ISERROR(VLOOKUP(A3, $D$3:$E$10, 2, FALSE)), "Not qualified", VLOOKUP(A3, $D$3:$E$10, 2, FALSE))

    補足:カスタムテキストを表示させたい場合は、以下のようにします。 ルックアップ値が見つからない (#N/Aエラー)その他のエラーを無視して、Excel 2013以降ではIFNA VLOOKUP式、それ以前のバージョンではIF ISNA VLOOKUPを使用します。

    IF ISERROR INDEX MATCH 式

    INDEX MATCHの組み合わせ(Excel 365ではINDEX XMATCH式)で検索を行う場合、ISERROR関数でエラーをチェックし、エラーが発生したらIFで指定したテキストを表示するという同じ手法で、起こりうるエラーをトラップして処理することが可能です。

    if(iserror(インデックス) ( return_column , MATCH ( ルックアップバリュー , ルックアップカラム , 0)))), " カスタムテキスト ", INDEX ( return_column , MATCH ( ルックアップバリュー , ルックアップカラム , 0)))

    ルックアップテーブルの1列目に時刻があるとすると、VLOOKUPはその左側を見ることができないので、INDEX MATCH式を使ってD列から時刻を取り出すことにします。

    =index($d$3:$d$10, match(a3, $e$3:$e$10, 0))

    そして、それを前述の汎用式でネストして、キャッチしたエラーを好きなテキストに置き換えるのです。

    =IF(ISERROR(INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0))), "Not qualified", INDEX($D$3:$D$10, MATCH(A3, $E$3:$E$10, 0)))

    注意:IF ISERROR VLOOKUP式と同様に、#N/Aエラーのみをトラップし、式自体の潜在的な問題を偽装しない方が理にかなっています。 そのためには、INDEX MATH式をExcel 2013以降ではIFNA、それ以前のバージョンではIF ISNAで包むようにしましょう。

    IF ISERROR Yes/No 式

    これまでの例では、IF ISERRORはエラーでなければ主式の結果を返していました。 しかし、別の方法で、エラーなら何かを、エラーでなければ別のものを返すことも可能です。

    IF(ISERROR()の場合 (...)), " テキスト_if_error ", " テキスト_if_no_error ")

    このサンプルデータセットでは、正確な時刻には興味がなく、グループAのどの参加者が資格を持ち、どの参加者が資格を持たないかを知りたいだけだとします。 これを行うには、MATCH関数を使って列Aの名前と列Dの資格を持つ参加者のリストを比較し、結果をISERRORに渡します。 列Dに名前がない場合(MATCHがエラーを返す)には、次のようにします。D列に名前が表示されている場合(エラーなし)には、"Yes" または "Qualified" を返します。

    =IF(ISERROR(MATCH(A3, $D$3:$D$10, 0)), "いいえ", "はい" )

    エラー数の数え方

    ある列のエラーの数を知るには、1つのセルだけでなく範囲をチェックする必要があります。 このため、ISERRORに対象範囲を「フィード」し、返されたブール値をダブル単項演算子(--)を使って1と0に強制します。 SUMまたはSUMPRODUCT関数で数値を合計して最終結果を出すことが可能です。

    例えば、こんな感じです。

    =sum(--iserror(c2:c10))

    なお、通常の数式として機能するのは、動的配列をサポートするExcel 365とExcel 2021のみです。 Excel 2019以前では、Ctrl + Shift + Enterキーを押して配列数式を作成する必要があります(手動で中括弧を入力しないでください、それでは機能しません!)。

    {=SUM(--ISERROR(C2:C10))}

    また、配列をネイティブに扱うSUMPRODUCT関数を使えば、すべてのバージョンで通常のEnterキーで数式を完成させることができます。

    =sumproduct(--iserror(c2:c10))

    ExcelのISERRORとIFERRORの違いについて

    ISERRORとIFERRORの両関数は、Excelでエラーをトラップして処理するために使用されます。 その違いは、次のとおりです。

    • ISERRORは、純粋に値がエラーであるかどうかをテストするだけです。 すべてのExcelバージョンで利用可能です。
    • IFERROR関数は、エラーを抑制または偽装するために設計されており、エラーが見つかった場合、指定した別の値を返します。 Excel2007以降で利用可能です。

    IFERRORは、一見するとIF ISERRORの省略形のように見えますが、よく見ると違いがあることに気づきます。

    • IFERRORで指定できるのは 値_if_error エラーがなければ、常にテストした値/式の結果を返します。
    • IF ISERRORはより柔軟性があり、エラーが発生した場合にどうするか、エラーが発生しなかった場合にどうするか、両方の状況を処理することができます。

    よりよく説明するために、次のような数式を考えてみましょう。

    =IFERROR(A1, "計算エラー")

    =IF(ISERROR(A1), "計算エラー", A1)

    これら2つの数式は等価で、どちらもA1にある数式駆動型の値をチェックし、エラーであれば「計算エラー」を、そうでなければ - 値を返すというものです。

    しかし、A1の値がエラーでない場合に何らかの計算を行いたい場合はどうでしょうか。 IFERROR関数ではそれができません。 IF ISERRORの場合は、最後の引数に目的の計算を入力するだけです。 例えば、以下のような感じです。

    =IF(ISERROR(A1), "計算エラー", A1*2)

    このように、時代遅れと思われがちなIFERROR式の長いバリエーションは、まだまだ使えるのです :)

    ダウンロード可能なもの

    ISERRORの計算式の例(.xlsxファイル)

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