エクセル術

VLOOKUPは数値か文字列かでErrorになる

VLOOKUP関数使っている時に、検索値が範囲の中に絶対あるはずなのに#N/Aになる!っていうことありませんか?

実はそれ検索値や範囲が数値に見えるのに、Excelは値として扱っている可能性があります。

例えば下の状態です。A6セルに「5」という数字があるからVLOOKUPの結果は「お」が返ってこないとオカシイです。

数値なのか文字列なのか

Excelって数値と文字列の取扱いがキチンと分けられているんです。上の例ではA列の数字を文字列で入力しました。文字列で入力するのは、先にセルの書式設定で表示形式を「文字列」に選択してから1と入力します。

通常、数字なのに文字列として扱われている場合、Excelは以下のように知らせてくれます。セルの左上に緑の三角形が出ます。これはこのセル間違い無いですか?大丈夫ですか?という印です。

セルを選択すると、どういう内容かメッセージが出てくる。今回は「数値が文字列として保存されています」です。

 

数値へ戻し方(エラーメッセージがある場合)

このメッセージの「数値に変換する(C)」を選ぶと自動的に数値に変換してくれ、VLOOKUPもエラーから元に戻ります。

複数行・列ある場合は複数行選択したうえで、「数値に変換する」をクリックすれば一気に直ります。

数値への戻し方(エラーメッセージが無い場合)

ややこしいのはエラーメッセージが消えている場合です。この場合先ほどの手法が出来ません。

セルの書式設定で数値に変えても、実はダメなんです。

これはセルの書式設定は表示形式を変更するだけで、セルの内容編集は行った事になっていないからです。ということはVLOOKUPで計算している範囲内も再計算されない為、文字列のままの認識です。

これではエラーが解消されません。

面倒くさいですが、いちいちセルを再編集する必要があります。

F2 → Enter → F2 → Enter の繰り返し

キーボードのF2を押すとセルの編集モードになります。そしてそのままEnterキーを押すと、再編集したことになりますので、数値として認識されます。

マクロで走らせる

もう一つの手法は、マクロでF2→Enterを繰り返しさせる方法です。

何万行という行数があれば手動でやるのは流石に大変なので、マクロで全セルを再編集させる事です。

再度エラーメッセージを表示させる

これが一番やりやすいです。

一回だけF2 → Enter を行い、その後に「元に戻す」をします。するとエラーメッセージを再度表示させる事が出来ます。

後は複数行選択し、「数値に変換する」をすれば一気に変換出来ます。

&で数値を結合させている場合

上の例では、ただ単純に入力時に文字列になってしまった場合です。それに対して、数式で文字列になってしまっている場合があります。

それは数値と数値を&で結合した場合です。

この場合もC列の結果は文字列として扱われます。検索値「15」はC6セルにあるので、VLOOKUPの結果は「お」になって欲しいですが、やはり#N/Aとなります。

この時は「数値が文字列として保存されています」メッセージが出ないのです。ただ、文字列なので標準だと左寄せになっているので、そこで気付けるかもしれません。

数値にする

文字列を数値に変換する関数があります。それはVALUE関数です。

そうすればC列の結果は数値として扱われるのでVLOOKUPが正常になります。

検索値を文字列にする

もしくは、C列の計算式が変更出来ないのであれば、検索値を文字列で検索すれば良いです。

この例ですと「15」を文字列にしてしまいます。関数はTEXT関数を使います。

2つ目の引数は表示形式を指定するところですので、文字列の場合 ”@” になります。

こうすればVLOOKUPはエラーになりません。

モバイルバージョンを終了