Excel豆知識

Vlookup等で空白が0になる謎を秒速解決する裏ワザ

Excelでデータを扱う人なら誰もがお世話になる関数。でも、VLOOKUP、XLOOKUP、『=』等でデータを取得しようとした場合、「参照先は空白なのに、なぜか『0』が表示されてしまう…」という経験はありませんか?
この地味ながらも厄介な問題は、表の見栄えを損なうだけでなく、時には計算ミスにも繋がります。この記事では、この現象がなぜ起こるのかを優しく解説し、誰でも簡単にできるスマートな解決策をご紹介します。

なぜ? 空白セルが「0」になる現象

まずは、実際にどのような状況で問題が起こるのか見てみましょう。
下の図のように、商品マスタには「値引額が未入力(=空白)のデータ」「値引額が0のデータ」の両方があります。しかし、VLOOKUPで参照すると、「どちらも同じ「0」として表示されてしまい区別がつきません。

参照元:商品マスタ

  A B
  商品コード 値引き
1A-0011500
3C-0033000

VLOOKUPの結果

  A B C
  商品コード 値引き 入力した数式

これはエラーではありませんが、本来空白であるべきセルに「0」が表示され、本当に「0」というデータなのか区別がつかなくなってしまいます。

原因はExcelの「仕様」にあり

なぜこんなことが起こるのでしょうか?
理由はとてもシンプルで、「Excelは、数式の中で空白のセルを参照すると、そのセルの値を『0』として扱う」という仕様(ルール)があるためです。

VLOOKUP関数が商品マスタの空白セルを見つけたとき、「ここには何もないな。何もないから、とりあえず『0』ということにしておこう」と判断し、結果として「0」を返してきてしまうのです。これはVLOOKUP関数に限らず、XLOOKUPやINDEX関数など、他のセルを参照する数式全般に見られる動きです。

解決策:数式の最後に「& ""」を付けるだけ!

この問題を解決する方法はいくつかありますが、最も手軽で簡単なのが、いつもの数式の末尾に「& ""」を付け加える、たったこれだけでOK。具体的に数式がどう変わるのか見てみましょう。

実際の修正方法

修正前の数式

=VLOOKUP(A2, 商品マスタ!A:B, 2, FALSE)

修正後の数式

=VLOOKUP(A2, 商品マスタ!A:B, 2, FALSE) & ""

この「& ""」を付けるだけで、下の図のように、参照先が空白の場合は結果もちゃんと空白で表示されるようになります。
※ただしこの場合、表示された0は数字ではなく文字列なのでご注意ください。

参照元:商品マスタ

  A B
  商品コード 値引き
1A-0011500
3C-0033000

VLOOKUPの結果(修正後)

  A B C
  商品コード 値引き 入力した数式


参照先が空白のデータは空白 / 参照先が0のデータは0 と正しく表示されるようになりました。

【補足】IF関数を使った確実な方法

「& ""」は手軽ですが、結果がすべて「文字列」になってしまうため、その後の計算に使いたい場合には不向きです。もし、参照した結果を数値として計算に使いたい場合は、IF関数を組み合わせるのが王道です。

=IF(VLOOKUP(A2, 商品マスタ!A:B, 2, FALSE)="","",VLOOKUP(A2, 商品マスタ!A:B, 2, FALSE))

この数式は「もしVLOOKUPの結果が空白なら空白を返し、そうでなければVLOOKUPの結果を返す」という意味です。数式は長くなりますが、元のデータが数値なら結果も数値のまま扱える、より確実な方法です。

まとめ:小さな工夫でExcelをもっと快適に

VLOOKUPで空白セルが「0」になる問題は、多くのExcelユーザーが一度は経験する「あるある」な悩みです。参照した結果を計算に使わないのであれば、数式の最後に& ""を付け加えるだけの簡単なテクニックで、資料は見違えるほどスッキリします。

もし計算にも使いたい場合は、IF関数を組み合わせる。この2つの方法を場面に応じて使い分けることで、あなたの作る資料はもっと見やすく、正確になります。ぜひ、今日からのExcel作業で活用してみてください。