• ベストアンサー

VLOOKUPで上手く表示されません

以下のような商品の一覧を作成し、A列からコード番号(00000)項目、商品名、単価と表を作成しました。(100品目ほど) ≪例≫                  A列   B列    C列   D列    S列   T列    U列   V列 00001  文房具  ノート  \120   00001  文房具  ノート  \120 01252  飲料水  お茶   \150   08012  #N/A   #N/A   #N/A 08012  文房具  鉛筆   \100 ⇒ 00002  衣料品  Tシャツ \3000 00002  衣料品  Tシャツ \3000   06509  #N/A   #N/A   #N/A 06509  書籍   雑誌   \500 00003  食品   ガム   \120 関数 T1=VLOOKUP(S1,A1:D6,2,FALSE)=文房具(それぞれの列番号を参照) 上記のように他の列で売り上げた分だけを抽出したいのでVLOOKUPを使ってコード番号を入力すると検索できるように関数を作りましたが上手く出ません。 00001や00002は普通に出るのですが00001の次に08012を入力すると#N/Aが出てしまいます。 商品のコード表を並び替えても00001は出ますが08012は#N/Aが出てしまいます。 どうしたら上手く表示できるのでしょうか???

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

  • ベストアンサー
  • KODAMAR
  • ベストアンサー率26% (267/1006)
回答No.2

きちんと表示されましたが…。 A列をみると「00001」などとなっていますが文字列になっているのでしょうか? (私はそう設定しました。) そうなるとS列も文字列にしないと同じものとして表示されません。 それとVLOOKUPの式ですが、 T1=VLOOKUP(S1,A1:D6,2,FALSE)=文房具(それぞれの列番号を参照) となっていて、T2に入力した時は、T1をコピーしたのでしょうか? そのときの範囲指定はきちんとA1:D6になっていますか? このA1:D6は絶対変わらない範囲なので、$マークをつけてしまうことをオススメします。 (相対参照から絶対参照になります。) 以上の点に気をつけてもう一度トライしてみてください。 (すでに実施済みでしたらすいません。)

dennde
質問者

お礼

No.1の回答の後すぐに文字列に直してみました。 すごいです!ちゃんと出ました。ありがとうございます。 文字列にしないといけないんですね… 私は数式なので数値として認識させないといけないのかと勝手に思い込んでいました。

dennde
質問者

補足

ごめんなさい、再度質問です。 A列~D列も別のところからコピーしているとします。 するとコード番号を文字列にすると「0」と表記されます。 表示形式が文字列でも「0」の場合空白("")もしくは[白]にしたり出来るのでしょうか?

その他の回答 (4)

  • oresama
  • ベストアンサー率25% (45/179)
回答No.5

元データが空白であれば、 =IF(ISBLANK([元データ.xls]リスト!$A$1),"",TEXT([元データ.xls]リスト!$A$1,"0000#")) 0が入っている(白字や書式が"")場合でしたら、 =IF([元データ.xls]リスト!$A$1=0,"",TEXT([元データ.xls]リスト!$A$1,"0000#")) これでいかがでしょう?

dennde
質問者

お礼

おお!出来ました。 ありがとうございます。 コレで見るだけの人も見苦しくない表になりました。 考えればすごく簡単なことだったんですね。 煮詰まるとこんな些細なことも思いつかなくなります。 それにしても関数は奥が深い…

  • oresama
  • ベストアンサー率25% (45/179)
回答No.4

補足の質問内容が今ひとつ不明瞭ですが、 こちらで勝手に解釈させていただきますと、 元データは数列で出来ているものを、 そのままコピペしたので、 (ユーザー書式設定も残っている) あると考えられます。 具体的には、 00001は 1を00001に見せているということです。 そこで、どこかに、列を挿入し、 =TEXT(A1,"0000#") をペーストすれば、 完全に、00001という文字列になりますよ。 的外れでしたら補足をいただければと思います。

dennde
質問者

補足

回答ありがとうございます。 とりあえず列を挿入せずに直接関数を入れてみました。 元データは他のファイルですがA列の式には TEXT=([元データ.xls]リスト!$A$1,"0000#")にしたところ 元データのリストのコード番号が空白であれば「0000」と表記されてしまいます。 0の場合は、空欄(もしくは白字)にするのはどうすればいいのかを教えていただきたいのですが… コード番号は5桁で表示し、品目としては100くらいあります。

noname#166310
noname#166310
回答No.3

参照の問題のようですね。 式を=VLOOKUP(S1,$A$1:$D$6,2,FALSE) にしてみましょう。$は式の入力途中でF4キーを押すと、そのセル番地に対してついてきますよ。

dennde
質問者

お礼

回答ありがとうございます。 絶対参照は知っていたのですがF4の使い方は知りませんでした。便利ですね。

  • oresama
  • ベストアンサー率25% (45/179)
回答No.1

> VLOOKUP(S1,A1:D6,2,FALSE) 範囲が相対参照のままではないですか? $A$1:$D$$6 (絶対参照)に変更してみてください。 それと、 A列、S列は、 書式を文字列にしてありますよね?

dennde
質問者

お礼

すぐの回答ありがとうございます。 絶対参照にはしてあるのですがうまくいかないのです。 書式は文字列ですか? 表示形式ではユーザー定義で「00000;-000000;[白]G/標準」になってるのですぐに直してみます。

関連するQ&A