Excel Magicエクセル術
関数・数式

VLOOKUPで数値と文字列が一致しないときの対処法

見た目が同じ「1001」でも一致しない理由。データ型と空白、検索範囲を順に確認します。

まず、答えから。

数値の1001と文字列の「1001」は、完全一致の検索で同じキーとして扱われない場合があります。検索値と表の先頭列のデータ型をそろえてください。

Excel 2016以降を想定 / XLOOKUPの対応状況は別途確認

見た目ではなくデータ型を調べる

A2の検索値が数値かどうかはISNUMBER、文字列かどうかはISTEXTで確認できます。検索表の先頭列にも同じ検査を行ってください。

Excel
=ISNUMBER(A2)
=ISTEXT(A2)
値の例データ型注意点
1001数値通常は数値同士で比較
'1001文字列先頭のアポストロフィは入力時の指定
00123文字列推奨先頭の0に意味があるIDは保持

完全一致と範囲を先に確認する

次の式は、E2:E10でA2を探し、同じ行のF列の値を返します。FALSEは完全一致の指定です。検索キーは範囲の左端列に必要です。

Excel
=VLOOKUP(A2,$E$2:$F$10,2,FALSE)

データ型がそろっていても、キーが範囲外なら見つかりません。同じキーが複数ある場合は先頭の一致が返ります。

本当に数値なら、補助列で変換する

商品コードではなく、数値として扱ってよいキーなら、補助列に次の式を入力して内容を確認します。検索値と検索表の両側で同じ型に統一してください。

Excel
=VALUE(TRIM(A2))

セルの表示形式を「数値」に変えるだけでは、文字列が数値へ変換されるとは限りません。VALUEがエラーになる場合は、全角文字・余分な記号・通常と異なる空白がないか確認します。

先頭の0が必要なIDは文字列で統一する

00123のようなIDにVALUEを使うと123になり、情報が失われます。両側を文字列として取り込むか、固定5桁のIDであることが確実な場合に限り、数値123を次の式で00123へそろえます。

Excel
=TEXT(A2,"00000")

サンプルをダウンロード

CSVこの記事のサンプル素材無料ダウンロード · .csv

UTF-8のCSVデータです。Excelの[データ]→[テキストまたはCSVから]で取り込めます。ID列の先頭の0を残す場合は、その列のデータ型をテキストに指定してください。

本記事は旧URLの参照情報をもとに、新たに執筆した解説です。旧サイトの記事本文の復元・転載ではありません。画面や機能はExcelのバージョンによって異なります。