(Excel)XLOOKUP関数で空白セルが0にならないようにする

 ExcelのXLOOKUP関数で空白セルを取得すると値が「0」になってしまいますが、これに代わって空文字列(="")を取得する方法についてです。

  • XLOOKUP関数の第3引数内で空白セルを空文字列に変換しておけば、「0」ではなく空文字列を出力させることができます。
  • 文字列だけでなく数値もそのまま取得できるのがメリットです。

手順

 まずは「0」が返ってくる例です。
 画像ではB3:E6の範囲に名簿データが、G3セルに個人を特定するための番号「2」が記録されています。
 これに対しH3セルに「=XLOOKUP(G3,B3:B6,D3:D6)」と入力しています。これにより番号が2である者の身長が取得できるはずですが、その値が記録されているD4セルは空白セルとなっています。この式を実行すると……


 結果は「0」となってしまいます。
 空白のまま抽出してくれればいいのですが、これはちょっと目障りです。「身長」は基本的に0にならないので空白セルを抽出したことに気づきやすいですが、データの種類によっては本当に「0」を抽出したのと区別がつかなくなる恐れもあります。


 そこで次のような式に変えることで、「0」の代わりに空文字列(長さ0の文字列)とすることができました。

 H3セル

=XLOOKUP(G3,B3:B6,IF(D3:D6="","",D3:D6))

 XLOOKUPの第3引数(戻り範囲)を「IF(D3:D6="","",D3:D6)」とすることで、空白セル(値がないセル)を空文字列に変換しています。これにより空白セルを空文字列として取得することができます。


 この方法の(下記の別解と比較した)メリットは数値が文字列にならず、そのまま取得できることです。
 ここではG3セルの値を1に変更していますが、172という数値をそのまま(文字列にせず)取得できています。


 もちろん日付もそのまま取得できます(ただしH3セルの書式を日付に変更しています)。

備考

 別のやり方としてXLOOKUP関数の式に「&""」をくっつけるという方法があります。
 これでも空白セルを空文字として取得できるのですが、数値や日付が文字列になってしまうのが弱点です。

 H3セル

=XLOOKUP(G3,B3:B6,D3:D6)&""


 特に日付については、セルの書式を日付に変えてもシリアル値の文字列が表示されるだけになります。


 この場合はさらにVALUE関数を加えたり1をかけたりする必要があります。
 文字列を抽出するだけなら「&""」を付ける方が簡単ですが、数値や日付を扱う場合が注意が必要です。

 H3セル

=VALUE(XLOOKUP(G3,B3:B6,E3:E6)&"")