なぜ? 空白セルが「0」になる現象
まずは、実際にどのような状況で問題が起こるのか見てみましょう。
下の図のように、商品マスタには「値引額が未入力(=空白)のデータ」と「値引額が0のデータ」の両方があります。しかし、VLOOKUPで参照すると、「どちらも同じ「0」として表示されてしまい区別がつきません。
参照元:商品マスタ
| A | B | |
|---|---|---|
| 商品コード | 値引き | |
| 1 | A-001 | 1500 |
| 2 | B-002 | |
| 3 | C-003 | 3000 |
| 4 | D-004 | 0 |
VLOOKUPの結果
| A | B | C | |
|---|---|---|---|
| 商品コード | 値引き | 入力した数式 | |
| 1 | B-002 | 0 | =VLOOKUP(A1,...) |
| 2 | D-004 | 0 | =VLOOKUP(A2,...) |
これはエラーではありませんが、本来空白であるべきセルに「0」が表示され、本当に「0」というデータなのか区別がつかなくなってしまいます。
原因はExcelの「仕様」にあり
なぜこんなことが起こるのでしょうか?
理由はとてもシンプルで、「Excelは、数式の中で空白のセルを参照すると、そのセルの値を『0』として扱う」という仕様(ルール)があるためです。
VLOOKUP関数が商品マスタの空白セルを見つけたとき、「ここには何もないな。何もないから、とりあえず『0』ということにしておこう」と判断し、結果として「0」を返してきてしまうのです。これはVLOOKUP関数に限らず、XLOOKUPやINDEX関数など、他のセルを参照する数式全般に見られる動きです。
解決策:数式の最後に「& ""」を付けるだけ!
この問題を解決する方法はいくつかありますが、最も手軽で簡単なのが、いつもの数式の末尾に「& ""」を付け加える、たったこれだけでOK。具体的に数式がどう変わるのか見てみましょう。
実際の修正方法
修正前の数式
修正後の数式
この「& ""」を付けるだけで、下の図のように、参照先が空白の場合は結果もちゃんと空白で表示されるようになります。
※ただしこの場合、表示された0は数字ではなく文字列なのでご注意ください。
参照元:商品マスタ
| A | B | |
|---|---|---|
| 商品コード | 値引き | |
| 1 | A-001 | 1500 |
| 2 | B-002 | |
| 3 | C-003 | 3000 |
| 4 | D-004 | 0 |
VLOOKUPの結果(修正後)
| A | B | C | |
|---|---|---|---|
| 商品コード | 値引き | 入力した数式 | |
| 1 | B-002 | =VLOOKUP(...) & "" | |
| 2 | D-004 | 0 | =VLOOKUP(...) & "" |
参照先が空白のデータは空白 / 参照先が0のデータは0 と正しく表示されるようになりました。
【補足】IF関数を使った確実な方法
「& ""」は手軽ですが、結果がすべて「文字列」になってしまうため、その後の計算に使いたい場合には不向きです。もし、参照した結果を数値として計算に使いたい場合は、IF関数を組み合わせるのが王道です。
この数式は「もしVLOOKUPの結果が空白なら空白を返し、そうでなければVLOOKUPの結果を返す」という意味です。数式は長くなりますが、元のデータが数値なら結果も数値のまま扱える、より確実な方法です。
まとめ:小さな工夫でExcelをもっと快適に
VLOOKUPで空白セルが「0」になる問題は、多くのExcelユーザーが一度は経験する「あるある」な悩みです。参照した結果を計算に使わないのであれば、数式の最後に& ""を付け加えるだけの簡単なテクニックで、資料は見違えるほどスッキリします。
もし計算にも使いたい場合は、IF関数を組み合わせる。この2つの方法を場面に応じて使い分けることで、あなたの作る資料はもっと見やすく、正確になります。ぜひ、今日からのExcel作業で活用してみてください。