4/17/2023

Excel。VLOOKUP関数で「&””」で0表示は消せるが、数値型だとうまくいきません。【numeric type】

Excel。VLOOKUP関数で「&””」で0表示は消せるが、数値型だとうまくいきません。

<IFERROR+VALUE+VLOOKUP関数>

VLOOKUP関数で、検索値はあるけども、抽出する値が無い場合には、「0(ゼロ)」と表示されてしまいます。

VLOOKUP関数

B2に設定した数式は、

=IFERROR((VLOOKUP(A2,$A$7:$B$9,2,FALSE)),"")

この数式を、オートフィルでコピーしています。


検索値が無い場合は、IFERROR関数を組み合わせることで、「#N/A」のエラーを消すことができます。

ただ、B3のように、検索値はあるけども、抽出する値が無い場合には「0(ゼロ)」が表示されてしまいます。


そこで、VLOOKUP関数のあとに「&””」をつけることで、非表示にすることができます。


B2の数式は、

=IFERROR((VLOOKUP(A3,$A$7:$B$9,2,FALSE)&""),"")

と修正して、オートフィルで数式をコピーしています。


これで、「0(ゼロ)」を非表示にすることができました。


さて、ここまでは、抽出する値が「文字型」だったので問題はなかったのですが、B7の値を「鉛筆」から、わざと「100」という数値に変更してみましょう。


B4の値は、「100」と表示されていますが、左揃えになっています。

つまり、数値型ではなく「数値文字型」という文字型に変わってしまっています。


「&””」はたしかに、「0(ゼロ)」を非表示にしてくれますが、数値型を「文字型」に変えてしまいます。


そこで、VALUE関数を追加することで、数値型のままにすることができます。

=IFERROR(VALUE(VLOOKUP(A2,$A$7:$B$9,2,FALSE)&""),"")


これで、数値型のままにすることができました。


しかし、数値型に対応した数式なので、この数式を使って、文字型を抽出しようとしても、表示することができません。


このようなことから、抽出するデータが数値の場合と文字の場合で「VALUE関数」の使い分けをする必要がありそうです。


なお、VALUE関数は、文字列として入力されている数値を、数値列に変換する関数です。