• 締切済み

VLOOKUP関数について、文字列と数値の問題

お世話になります。現在、商品リストを作っておりまして、VLOOKUP関数を使っているのですが、エラーになってしまいます。 =VLOOKUP(A1,Sheet2!$A$2:$B$6,2,FALSE) という関数を使っているのですが、 A1に3桁のコードを入れるとSheet2のA2:B6から値を返すようになるのですが 「110」というコードを入力すると「白」と出てくるのですが、「010」というように0から始まるコードだと エラー#N/Aになってしまいます。セルによっては逆の現象が起こったりします。 文字列を数値にしたり、その逆を試してみたり(A1もsheet2の参照データも調節しましたが)したのですがどうしてもうまくいきません。 何が原因なのかまったくわからないのですが、心当たりのある方教えていただけますでしょうか。 よろしくお願いいたします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>「110」というコードを入力すると「白」と出てくるのですが、「010」というように0から始まるコードだとエラー#N/Aになってしまいます。セルによっては逆の現象が起こったりします。 このパターンは「数値」と「文字列」の数字が混在しているときに発生します。 このような場合は、検索リストと検索値のコード番号データをどちらかに統一する必要があります。 例えば数値に統一するときは、コード番号入力列のセルの表示形式をユーザー設定にして、「000」のようにして3桁の数字を入力します。 一方、文字列に統一する場合は、コード番号のセルの表示形式を「文字列」にして、そのまま入力します。 ただし、セルの表示形式を変更するだけでは、データの内容が変更されるわけでないので、表示形式を変更後、検索値や検索リストのコード番号を再入力する必要があります。 この入力操作を行うことなくまとめて「数値」データに変更するには、コード番号の列を選択して、「データ」「区切り位置」で「完了」してください(コード番号のセルの表示形式をユーザー定義で000にしてください)。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

>何が原因なのかまったくわからないのです  ⇒原因はご質問者の推察の通り、数値と文字列の差にあります。   そこで、セルの書式設定から書式を変更されたと思いますが、この操作によって即時に書式は反映されませんので混乱されたのではないでしょうか。   今回はデータ量(A1及びSheet2!A2:A6)も少なそうなので書式変更後にデータを再入力して下さい。   因みに対象範囲が多い場合、データ→区切り位置→次へ→次へ→列のデータ形式欄で形式を選択→OKで可能です。(但し、列を跨るような範囲はできません)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート2のA2セルからA6セルには数値が入力されているわけですね。その場合にはA1セルに入力する値は文字列としての数字ではなく数値を入力することが必要ですね。A1セルにゼロから始まる数字を入力するということは文字列を入力していることになり、シート2の数値と一致するはずもありません。 A1セルが標準の状態で010と入力すれば10と表示され、その場合には10という数値が入力されたことになります。シート2に10の数値が無ければ該当する数値が無いのですからエラー表示になります。また、シート2に数値として110がある場合でも文字列としてA1セルに110を入力してもエラー表示になります。文字列として入力してもエラーにならないようにするのでしたら式を変えることでしょう。また、エラーとなる場合にはエラー表示をさせないようにするのでしたら次のような式にすればよいでしょう。 =IF(COUNTIF(Sheet2!$A$2:$A$6,VALUE(A1))=0,"",VLOOKUP(VALUE(A1),Sheet2!$A$2:$B$6,2,FALSE)) この式では文字列の数字として入力した値は数値に変換して使用しています。

noname#164823
noname#164823
回答No.1

参照表とコードを入れるセルの書式を「ユーザー定義」で 「000」としてみて下さい。 10と入れるだけで、010となります。これなら値を返します。

関連するQ&A