VLOOKUP関数は、Excelでよく使用される関数の一つです。この関数を使用することで、特定の値を持つ行から他の情報を引き出すことができます。
しかし、正しく使用しないとエラーが発生することがあります。エラーの多くは、検索値と範囲の表示形式が一致していないことが主な原因です。
この記事では、VLOOKUP関数における一般的なエラー事例とその解決方法について説明します。
VLOOKUP関数の簡単な説明
=VLOOKUP(検索値,範囲,列番号,[検索方法])
- 検索値:検索を行うための値です。
- 範囲:検索を行う対象となる表や範囲を指定します。この範囲は、検索値が含まれる列が含まれている必要があります。
- 列番号:検索結果を取得したい列が、範囲内で何列目にあるかを指定します。1から始まる列番号です。
- 検索方法 (オプション):精密な検索を行う場合、FALSEまたは0を指定します。近似検索を行う場合はTRUEまたは1を指定します。通常は省略されることがあります。
参考:VLOOKUP関数の基本
文字と数値の違いによるエラー
表示形式の違いによるエラーで、私が良く遭遇するエラーです。
エラー例
エクセルブックに2つのシートがある例です。
- 入力シート:VLOOKUP関数を設定するシート
- コード表:検索を行う対象となる表や範囲のシート

入力シート:VLOOKUP関数を設定するシートです。C列にVLOOKUP関数を設定します。検索値はB列のコードです。

コード表:範囲の対象になるコード表です。

VLOOKUP関数を入力した後、エラーになった例です。ぱっと見ではなぜエラーになるかわからないことがありますが、これは単純です。
- 入力シートのコード:数字
- コード表のコード:文字列
解決方法:検索値と範囲の表示形式を一致させる
検索側で数値を使いたい場合、範囲の文字列を数値に変換するか、または逆に検索値を文字列に変換することが考えられます。

この例は、範囲の文字列を数値に変換する場合です。コード表の項目「コード」をセルの書式設定で「数値」にします。しかしこれではエラーのまま。

数値に変換した後、数字を選択しEnterキーを押すと問題が解決します。ただし、コード表に多くのコードがある場合は手間がかかります。

コード表外で、Value関数を使って変換し、その数字をコード表の対応するセルに貼り付けると、手軽に解決できます。
=VALUE(文字列)
上記の場合は、セルD2に「=VALUE(D2)」と入力し、D4まで式をコピーします。ただし、この例のコード表はテーブル設定をしているため、「=VALUE(商品コード[@コード])」と表示されます。
半角と全角の違いによるエラー
「半角文字」と「全角文字」の違いによるエラーは、しばしば質問されます。
ここでは説明は単純な例ですが、VLOOKUP関数にIF関数がネストされ、ANDやORが使われていると、何が原因かすぐにわからないかもしれません。
エラー例
エクセルブックに2つのシートがある例です。
- 入力シート:VLOOKUP関数を設定するシート
- 料金表:検索を行う対象となる表や範囲のシート

入力シート:VLOOKUP関数を設定するシートです。C列にVLOOKUP関数を設定します。検索値はB列のコードです。

両k院表:範囲の対象になるコード表です。

- 入力シートのコード:半角
- 料金表のコード:全角
解決法
数字のエラーと同じ方法で、どちらかのシートのコードを変換します。
参考:全角文字と半角文字の変換