数値と文字列が混在したデータをうまく処理して、VLOOKUP関数でエラーを出さずにデータを取り出す方法を紹介する。
◆文字列と数値が混在していると?
VLOOKUP関数の検索値は数値と文字列を区別するため、通常は2つのタイプのデータが混在しているとどちらかがエラーになる。
一番いいのはデータの型を揃えることだが、今回は何らかの理由でデータの型を変えられない場合に絞って2つのケースについて対処方法を考えてみた。
VLOOKUP関数で参照する範囲の一番左の列のデータを「被検索値」とする。
今回は下の図のように、被検索値に文字列と数値が混在しているというシチュエーションで有効な方法だ。
参照元の検索値が「数値」の場合、何も考えずにVLOOKUP関数を使うと下記のようになる。
当然だが、2,4は検索値(F列)が数値、被検索値(C列)が文字列のためエラー(#N/A)になる。
問題は被検索値に数値と文字列が混在していることにあるので、エラーを出さないために両方のデータ型に対応できる数式を組む必要がある。
◆解決策①(検索値が数値の場合)
結論から言うと、VLOOUP関数のほかにIFERROR関数とTEXT関数を組み合わせることで解決する。
IFERROR関数は以下のように記述する。
=IFERROR(値、エラーの場合の値)
処理の流れは①まず数値として検索し、②エラーにならなければそのまま出力、③エラーになったら検索値を文字列に変換して検索する。
ここで必要になるのがTEXT関数だ。
TEXT関数は指定したセルの値や直接記入した値を、特定の形式に変換できる関数。
今回は被検索値が文字列なので、検索値を文字列に変換する。
TEXT関数内で"@"と記述することで、指定した値を文字列に変換することができる。
上記の図で言うと、下記の青文字の部分だ。
◆解決策②(検索値が文字列の場合)
解決策①と異なり、検索値が文字列の場合もほとんど同じような処理でエラーを回避できる。
①とは違い、検索値が全て文字列なので、被検索値が数値の場合にエラーになってしまう。
そこで①とは逆に、まずはIFERROR関数で被検索値が文字列の場合に通常の処理をする。
次にエラーになる場合のみ、検索値を数値に変換すればよい。
文字列を数値に変換するにはVALUE関数を使うだけで簡単にできる。
①と違うのは下記の部分だ。
まず文字列で検索し、エラーが返ってきた場合のみF3セルをVALUE関数で数値に変換して処理する。
そうすることでエラーを出さずにすべての値を処理することができる。
ちなみに、ここまでは被検索値のみ数値と文字列が混在した場合の解決策について説明したが、検索値も数値と文字列が混在したカオスな状態であっても下記のように記述することで対処することはできる。
データがカオスなら数式もカオス。
ちなみにこの3つの数式、同じように見えて実は全部ちょっとずつ違う。
関数の組み合わせ方によっていろんな解決法があるのだけど、正直こんなバカバカしい数式を組む前にデータの型を揃える努力をした方が何百倍も効率がいい。
VLOOKUP関数に限らず、EXCELを使う上でデータの型というのは非常に大切な要素なので、今までないがしろにしていた人はこれを機に是非ともデータを揃えることを意識するようになってほしいと切に願う。