[[20050221102103]] 『VLOOKUPの使い方についての質問』(あしあし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VLOOKUPの使い方についての質問』(あしあし)
 ワークワークシート1に検索番号、商品名、単価を記入し、単価一覧と定義します。
 
 A        B      C      D 
 1001[糸切り]   1001-a    糸切り       10
 1001[ボーンいれ]  1001-b    ボーンいれ   15
 157-1618[商品A]  157-1618-a  商品A      20
 157-1618[商品B]  157-1618-b  商品B      30

ワークシート2に検索番号を入力すると単価が表示されるようにしようと思います。

 A   B     C    D  
1 品番   商品      検索番号 単価
2 1001-b  ボーンいれ  1001-b   --

単価の欄には「VLOOKUP(C2,単価一覧,4)と記入します。
そうすると、単価のらんに、15ではなくて0と表示されてしまいます。
他に違う商品の単価が表示されたりします。

式がどう悪いのか、あるいは並べ替えの順が違うのか全く解りません。
・・・助けてください。


 VLOOKUP関数は範囲(ここでは単価一覧)の左端の列を使って検索します。
ワークシート2で検索番号を使って検索しようというのであれば、単価一覧の範囲は
列B〜列Dを指定しておく必要があると思います。
また、VLOOKUP関数の4番目の引き数も指定しておいたほうが良いと思います。
=VLLOKUP(C2,単価一覧,3,FALSE)
という感じでしょうか?
ちなみに3番目の引き数は、B列からスタートしますので3番目、最後のFALSEは、該当が
ない場合にエラーが返ることになります(昇順に並べる必要もなくなります)。
(shouta)

shoutaさんへ
 回答有難う御座います。
どうやら、参照先のワークシートの並び替えて一番最後に来る値の単価を表示してしまうらしいです。Bの数値には関係なくで(下記の表参照)

 《ワークシート1》
 A        B      C      D 
 1001[糸切り]   1001-a    糸切り       10
 1001[ボーンいれ]  1001-b    ボーンいれ   15
 1001[ネーム付け]  1001-c    ネーム付け   25
 157-1618[商品A]  157-1618-a  商品A      20
 157-1618[商品B]  157-1618-b  商品B      30
 157-1618[商品C]  157-1618-c  商品C      35

 《ワークシート2》
 A   B     C    D  
1 品番   商品      検索番号 単価
2 1001-b  ボーンいれ  1001-b   --

 D2の欄に「=IF(ISERROR(VLOOKUP(C2,単価一覧,4)),"",VLOOKUP(C2,単価一覧,4))」と記入すると、35と表示される。
ワークシート1の作りが悪いのだと思うのですが、どうかアドバイスをお願いします。
ちなみに、ワークシート1のA欄は消去するつもりです。

 ワークシート2に入力されている式の構成には何も問題がないと思います。
通常であれば、対象があればその単価を、なければ非表示という形になるはずです。
繰り返しになりますが、ワークシート1はそのままで結構ですから、
1.「単価一覧」という範囲名の対象範囲をB〜D列に変更(現在はA〜D列では?)
2.ワークシート2に入力するVLOOKUPの式の4番目の引き数を省略せずに、ちゃんと
FALSE(または0)を入れる。
=IF(ISERROR(VLOOKUP(C2,単価一覧,4,0)),"",VLOOKUP(C2,単価一覧,4,0))
                                 ~~                          ~~
 を試してください。
なお、単にワークシート1のA列を削除しただけでは対象範囲は変わりませんから、挿入-名前
から対象範囲を変更してください。(ごめんなさい、いけるかも?一応確認ください)
(shouta)

 横から失礼します。
 質問を理解していないかもしれませんが、
 Sheet1のA1:D6に「単価一覧」と名前を定義してあり、
 検索する列が2番目の列であるのなら、OFFSET関数で範囲をずらしたらどうでしょう?
 =VLOOKUP(C2,OFFSET(単価一覧,0,1),3,FALSE)
 =IF(ISERROR(VLOOKUP(C2,OFFSET(単価一覧,0,1),3,0)),"",VLOOKUP(C2,OFFSET(単価一覧,0,1),3,0))
 
 あっ・・・> A欄は消去するつもりです。
 とのことで、本当におじゃまをしたようです。m(_ _)m
 shoutaさんが書かれているように
 =VLOOKUP(C2,単価一覧,3,FALSE)
 でいけそうです。
   (Hatch)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.