Excelでデータがないときは表示しない関数まとめ!IFERROR・IFNA・ISBLANKの使い分け!

Excelでデータがないときは表示しない関数まとめ!
Excelでデータがないときは表示しない関数を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・VLOOKUPで探した値がないと「#N/A」と表示されてしまう
・空欄のセルに「0」が出てしまう
・IFERRORとIFNAの違いがわからない

ですよね。

今回はそんなお悩みを解決する

・データがないときに何も表示しない関数の使い分け(IFERROR / IFNA / ISBLANK / IF+COUNTIF)

についてまとめます!

完成イメージ

データがないときにエラーや0を表示しないようにすると、表がぐっと見やすくなります。
今回は
・検索した値がないときは空白にする(IFERROR / IFNA)
・空欄のセルや0を表示しない(ISBLANK / IF)
・完全一致で見つからないときだけ空白にする(IF + COUNTIF)
をゴールにします。
検索コードを変えても、#N/Aや0が出ずにすっきり表示されるようになります。

完成イメージ
上の画像が完成形です。検索コードに対応するデータがないときは、#N/Aではなく何も表示されません。

なお、毎回数式を入れるのが手間な方向けにVBAで検索式をまとめて入れる方法と、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
早速実装して試してみましょう!

STEP1. 商品表と検索エリアを用意する

まずは商品の一覧表と、コードを入れて検索するエリアを用意します。
左側が商品表(A列〜C列)、右側が検索エリア(D列〜F列)です。
検索エリアは、調べたい商品コードを入れると商品名と単価が出るようにしています。
ここではあえて検索エリアに存在しないコードや空欄を混ぜてあります。
そのため、いまは素のVLOOKUPなので#N/Aと表示されています。
この#N/Aを消していくのが、今回のゴールです。
商品表と検索エリア(#N/Aが出ている状態)

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。

商品コード 商品名 単価 検索コード 商品名 単価
A1001 りんご 150 A1003
A1002 みかん 120 A9999
A1003 ぶどう 380
A1004 もも 450 A1006
A1005 なし 200

※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。

STEP2. IFERRORでエラーをまとめて空白にする

まずは一番よく使うIFERROR関数です。
検索結果のセルに、VLOOKUPをIFERRORで包むだけです。
E3セルには次のように入力します。

=IFERROR(VLOOKUP($D$3,$A$2:$C$6,2,FALSE),"")

見つからないときは #N/A ではなく「””(空文字)」を返すので、セルは空に見えます。
つまり、エラー表示を丸ごと消せるというわけです。
商品名と単価の両方のセルに入れておきましょう。
IFERROR関数の入力画面
エラーだったセルが、すべて空になりました。
存在するコード(A1003)の行だけ、これまでどおり商品名と単価が表示されています。
数式を入れる前はセルがエラーで埋まって見づらかったのが、すっきりしましたね。
IFERROR適用後(#N/Aが消えた状態)

STEP3. IFNAで「#N/Aだけ」を消す

IFERRORはすべてのエラーを消しますが、IFNA関数は#N/Aだけを消す関数です。
式の形はIFERRORと同じで、関数名を変えるだけです。

=IFNA(VLOOKUP($D$3,$A$2:$C$6,2,FALSE),"")

たとえば単価のセルに文字が混ざっていて #VALUE! が出ている場合、IFERRORだとそのエラーも隠れてしまいます。
IFNAなら #N/A だけを空白にして、#VALUE! はそのまま残せるので、入力ミスに気づけます。
間違いを見つけたい場合はIFNAがおすすめです。
IFNA関数の入力画面

STEP4. ISBLANKで空欄のセルを判定する

検索コードそのものが空欄のときに何も表示しないようにするには、ISBLANK関数を使います。
ISBLANKは「セルが本当に空かどうか」を判定する関数です。
E4セルには次のように入力します。

=IF(ISBLANK($D$4),"",VLOOKUP($D$4,$A$2:$C$6,2,FALSE))

検索コードが未入力なら何も表示せず、入力されていれば検索結果を出す、という式です。
「調べたいコードをまだ入れていないだけ」のときに #N/A が出るのを防げます。
なお、ISBLANKは「空のセル」しか空とみなしません。
「=””」で作った空文字や、数式の結果が空のセルは空とみなされない点に注意しましょう。
ISBLANK関数の入力画面

STEP5. IF + COUNTIFで完全一致のときだけ表示する

「そのコードが本当に表の中に存在するか」を先に確認したいときは、COUNTIF関数を組み合わせます。
COUNTIFで件数を数え、0件なら空白、1件以上ならVLOOKUPの結果を出す、という式です。
E5セルには次のように入力します。

=IF(COUNTIF($A$2:$A$6,$D$5)=0,"",VLOOKUP($D$5,$A$2:$C$6,2,FALSE))

COUNTIFは完全一致で探すので、余分なスペースや表記ゆれがあるコードはヒットしません。
「存在チェック」と「値の取得」を分けたいときに便利です。
見つからないときに「該当なし」と表示させたい場合は、”” の代わりに “該当なし” と書けばOKです。
IFとCOUNTIFの組み合わせ

IFERROR・IFNA・ISBLANK・IF+COUNTIFの使い分け

「どれを使えばいいの?」と迷ったときのために、違いを表にまとめました。

使う関数 何を消せるか こんなときに
=IFERROR(式,””) すべてのエラー(#N/A・#VALUE!・#DIV/0!など) とにかくエラー表示を出したくないとき
=IFNA(式,””) #N/Aだけ #VALUE!などは気づけるように残しておきたいとき
=IF(ISBLANK(セル),””,式) 空欄セルを参照したときのエラー 検索コードが未入力のときに何も出したくないとき
=IF(COUNTIF(範囲,コード)=0,””,式) 存在しないコードのときの結果 完全一致で存在チェックしてから値を出したいとき
POINT

エラーを消すなら IFERROR、#N/Aだけを消すなら IFNAです。
「見つからない」と「未入力」は別物なので、空欄はISBLANK、存在しないコードはCOUNTIFで使い分けると失敗しません。

0を表示しないようにする

数値の0を表示しないようにしたいときも、同じ考え方でIF関数が使えます。
値が0なら「””」を返すようにします。
B9セルには次のように入力します。

=IF(A9=0,"",A9)

0の行だけが空欄になり、0以外はそのまま表示されます。
上の画像では、数量の0に対応する金額が空欄になっていますね。

なお、シート全体で0を隠したいときは、
ファイル → オプション → 詳細設定 → 「ゼロ値のセルにゼロを表示する」のチェックを外す
という方法もあります。
こちらはブック全体に効く設定なので、一部のセルだけ隠したいときはIF関数がおすすめです。
0を表示しないサンプル

VBAで検索式をまとめて入れる

毎回数式をコピーして貼るのが面倒なときは、VBAでまとめて入れるのがおすすめです。
ボタン1つで検索エリアの数式を一気に更新できます。

Sub SetIfErrorLookup()
    Dim i As Long, lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To 5
        If Range("D" & i).Value <> "" Then
            Range("E" & i).Formula = _
                "=IFERROR(VLOOKUP($D$" & i & ",$A$2:$C$" & lastRow & ",2,FALSE),"""")"
            Range("F" & i).Formula = _
                "=IFERROR(VLOOKUP($D$" & i & ",$A$2:$C$" & lastRow & ",3,FALSE),"""")"
        Else
            Range("E" & i).ClearContents
            Range("F" & i).ClearContents
        End If
    Next i
End Sub

タカヒロ

タカヒロ
IFERRORで包むだけで、検索コードを書き換えても #N/A が出なくなります。
まずは手で1つ数式を入れて動きを確かめてから、VBAでまとめるのがおすすめです。

うまくいかないときの対処法(トラブルシュート)

実際に試すと、思ったように動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。

症状 原因 対処
空白にしたのに0が出る 数式の最後を 0 や NULL で書いている ダブルクォーテーション2つで “” と書く
空にしたセルがCOUNTIFで数えられる ISBLANKは「=””」で作った空文字を空とみなさない 空文字も除きたいなら =IF(セル=””,””,式) を使う
#N/Aが消えない IFERRORの括弧が数式全体を包んでいない =IFERROR(VLOOKUP(…),””) の形にする
検索コードに余分な空白がある 文字列の前後にスペースが入っている =TRIM() で整える、またはCOUNTIFで存在確認する
違う商品の値が返る VLOOKUPの最後の引数を省略して近似一致になっている 最後に FALSE を付けて完全一致にする

関数の説明

今回使う4つの関数の概要です。
どれも「表示しない」ための基本の関数なので、違いを押さえておきましょう。

IFERROR関数(イフエラー)

書式 =IFERROR(値, エラーの場合の値)
できること 数式がエラーになったとき、代わりに表示する値を指定します。
戻り値 エラーでなければ「値」、エラーなら「エラーの場合の値」
こんなときに #N/Aや#VALUE!などのエラー表示をまとめて消したいとき。
注意 エラーの種類を問わずすべて置き換えるため、気づきたいエラーも隠れてしまいます。

IFNA関数(イフエヌエー)

書式 =IFNA(値, N/Aの場合の値)
できること #N/Aエラーのときだけ、代わりの値を返します。
戻り値 エラーが#N/Aなら代わりの値、それ以外はそのまま
こんなときに 「見つからない」ときだけ空白にし、他のエラーは残したいとき。
注意 Excel 2013以降で使えます。#VALUE!などは置き換えません。

ISBLANK関数(イズブランク)

書式 =ISBLANK(テストの対象)
できること セルが本当に空かどうかを判定します。
戻り値 空なら TRUE、空でなければ FALSE
こんなときに 未入力のセルを参照したときのエラーを防ぎたいとき。
注意 “=”” で作った空文字や、数式の結果が空のセルは FALSE になります。

COUNTIF関数(カウントイフ)

書式 =COUNTIF(範囲, 検索条件)
できること 条件に一致するセルの個数を数えます。
戻り値 条件に一致したセルの数(0以上)
こんなときに 値が表の中に存在するかを先に確認したいとき。
注意 既定は完全一致です。ワイルドカード(*)を使うと部分一致になります。

完成

検索コードのA9999や空欄の行が、#N/Aではなく何も表示されなくなりました。
存在するコード(A1003)では、これまでどおり商品名と単価が表示されています。
エラーや0が見えなくなったぶん、表がとてもすっきりしましたね。
思ったとおりに動きましたか?
完成した表

さいごに

いかがでしょうか。

今回は、

・Excelでデータがないときは表示しない関数まとめ(IFERROR / IFNA / ISBLANK / IF+COUNTIF)

についてまとめました。

まずは今回のサンプル表で、検索コードをいろいろ変えて、ぜひ一度試してみてください。
エラー表示がなくなると、資料としても見やすくなりますよ。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image