• ベストアンサー

VLOOKUP関数について

WindowsMEを使用しています。エクセル2000でVlookup関数の商品台帳のNo.が0292とか1234の数字のみですと商品名が表示されません。B0292、1234Aなどアルファベットが含まれていると表示されます。なお商品台帳の数字のみのセルの表示形式は標準となっています。数字のみのNo.を入力して商品名を表示するにはどうすればよいのでしょうか。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

はじめまして。 商品台帳に数字を入れる列を、右クリックして書式設定を文字に変えてから数字を入れるといいと思います。 数字を入れた後だとダメなので、入力する前に予め文字に設定してみて下さい。 多分これでいけると思います。

honatu
質問者

補足

ありがとうございました。希望通りに表示されました。どうして数字を入れた後だとだめなのでしょうか。向学にために教えていただきたいのですが。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.7

>どうして数字を入れた後だとだめなのでしょうか. (1)コンピュタ内の値としては、数値と文字列は全然違います。 (2)たまたまエクセル(システム)は、セルの書式設定を文字列にして、数値を入力すると、値を文字列に直してセットしてくれます。 (3)標準や数値表示形式にして(なったままで)、数字を入力し、後から表示形式を文字列にしても、値は文字列になります。がしかしVLOOKUP関数は入れた瞬間にその値を使ってしまいます。 (4)標準表示形式状態で、文字列として数量を入力するには、’(アポストロフィ)をいれ続けて数字を入れます。 (5)Vlookup関数は、見た目でなく、値で表の第1列と検索するため入力した文字・数字と較べて、一致した値が(行が)あると、その次ぎの列等の数値か文字列を 引っ張ってきます。 (6)数値であるか、文字列であるかは、数式バーの中が ’つきかどうかとか左寄せ、右寄せでわかります。 しかし見た目には、曖昧なところがあります。A1に数値を入れて=A1 & "1"とすると文字列11になる、逆にA1を文字列1にして=A1+1を入れると、2になるなど、自動変換があったりするからです。使用者の数値計算の便利を優先しているためのように思う。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

#2のものです。 >エラー表示は#N/A となっています。 検索してくれませんよという例を挙げたわけです。 表の方を文字列「0231」(すなわち’0231)でつくって、数字で0231-->231を入れるとエラー= 検索してくれません、と言いたかったのですが。 表=文字列--入力=数字の例。 表が文字列である以上、入力は文字列でしないといけないでしょう。 検索表に混在するなら、数字のみの場合は数字で入れるという ルールを利用者に徹底しないといけないでしょう。 >意味がよくわからないのですが 数例を実例としてあげただけです。OKWEBでは強制的に左詰になりわかりにくいですが、C列で先頭0つきや文字含みは文字列をいれた例です。数字を入れた例は上記の 231だけです。 ○表示形式さえ文字列にしておけばと言う論調があるが 表=数字(表示形=文字列)--入力=数字や入力=文字列の場合どうなるかやって見ますが、中身の値を問題にして検索すると思っていたのですが。

honatu
質問者

お礼

いろいろありがとうございました。maririn623さんのご回答で解決しました。今後ともよろしくお願いいたします。

noname#148473
noname#148473
回答No.4

たびたびすいません、#1です。 二転三転して申し訳ないのですが、全てのコードを文字列形式に直されたのであれば、TEXT関数は使わずにそのまま参照したほうがよいかもしれません。 そのかわり、「0232」は、きちんと「0232」と入れる必要があります。「232」はNGとなります。 #N/Aが出るということは、検索文字列が検索範囲の中に見つからないということで、つまり入力したコードと、台帳のコードがきちんと一致していないということです。そのあたりから調べてみてください。 それから、コード入力欄から検索文字を参照してくるときに、ただ A1 とするよりも TRIM(UPPER(ASC(A1))) としたほうが良いかもしれません。 TRIMは余分なスペースなどを取り除き、UPPERは英小文字を大文字に変換、ASCは全角を半角に変換します。 また、検索したい商品コードを入力するセルには、メニューバーの「データ」→「入力規則」→「日本語入力」のところで、「日本語入力:オフ(英語モード)」にしておけば、自動的に日本語入力がオフになるので、楽です。 上手くいけばよいのですが・・・。

honatu
質問者

お礼

いろいろありがとうございました。maririn623さんのご回答で解決しました。今後ともよろしくお願いいたします。

noname#148473
noname#148473
回答No.3

#1です。 よく見たら商品コードで5桁のものもあるのですね。 TEXT(E1,"0000") の部分を TEXT(E1,"00000") に直してみてください。 それから、くどいようですが商品コード部分のセル表示形式は文字列に直したほうが良いですよ(たとえ正常に表示されているように見えても、再編集した時などに「0292」が「292」に変わってしまう恐れがあります。) 文字列形式にしておけば、将来もし「0292-2」のようなコードが出てきても問題なく対応できます(標準形式では、この場合エラーになります)

honatu
質問者

補足

fuji2002さん何度も申し訳ありません。TEXT(E1,"00000") に修正しましたが#N/Aのエラーが表示されます。商品コード部分のセル表示形式は文字列に直しました。商品コードを入力するセルも文字列に修正しましたがよろしいのでしょうか。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

(1)=VLOOKUP(C1,$A$1:$B$4,2,FALSE)    (下例でD1セルに入れる)のように    (A)表を表す番地に$を入れること。    (B)第4引数をFalseにすること。    は抜かりないと思います。 (2)Falseの時は表のキー(最左列、第1列)の順にソートする必要はないので問題ないでしょう。 (3)後は表の第1列の値が数字か文字列かが問題です。 表示形式を選んだ結果、見える文字・数字と関係なく 実際の値を問題にします。 本件はB0292や0292が出てきているところから考えて文字列(’+数字、数字+文字、文字+数字)に統一すべきでしょう(数字+文字、文字+数字は自動的に文字 列になります。 理論ではエントリーの値を数字にして(文字列分の行と数字の行を混在して)、数字を入れれば 索引してくれますが、使い手との関連で、齟齬を生じやすいと思います。作った本人も勘違いするような状況になりやすいと思います。 下記例で確認。 (A) (B)  (C)  (D) 0231 a 2411 b 2411 b 2411 x (2411は数字) 1241a c 231 #N/A 2411 x 1241a c           0231 a

honatu
質問者

補足

imogasiさんいつもありがとうございます。 下記例で確認。 (A) (B)  (C)  (D) 0231 a 2411 b 2411 b 2411 x (2411は数字) 1241a c 231 #N/A 2411 x 1241a c           0231 a の意味がよくわからないのですが、エラー表示は#N/A となっています。

noname#148473
noname#148473
回答No.1

 ご質問の内容だけでは断定できないのですが、「表示形式:標準」となっているセルに数字のみを入力した場合は数値として扱われますので、当然「0292」は「292」として扱われます。  まず商品台帳のコードが入力されたセルの表示形式を「文字列」にして、もし「292」のようになっているものがあれば「0292」形式に直す必要があります。  検索用に入力するコードについては、vlookupのセル参照部分を =VLOOKUP(E1,$B$1:$D$3,2,0)          ↓ =VLOOKUP(TEXT(E1,"0000"),$B$1:$D$3,2,0)  のように直せばokです。 

honatu
質問者

補足

fuji2002さん、早速のご回答ありがとうございます。商品台帳のセル表示形式は標準となっいますが0292のようにされています。なお数式は =IF(A2="","",VLOOKUP(TEXT(A2,"0000"),商品台帳!$B$2:$B$1439,2,FALSE) に修正しましたが、やはり表示されません。再度よろしくお願いいたします。