プロが教えるわが家の防犯対策術!

初めて質問いたします。

以下の表を別シートで検索して価格を表示させたいのですが、
顧客番号が重複により、表示させたい価格が出せません。

------------------------------------
例:シート1

     A      B    C    D   
1 顧客番号_会社名_商品_価格
2     01_A社__テレビ_5,000
3     01_A社__モニタ_2,000
4     02_B社__テレビ_5,000
5     03_C社__テレビ_5,000
             :
             :
------------------------------------
シート2

B2に以下の式を入れています。
 =VLOOKUP($A2,シート1!$A$2:$D$5,4,0)

     A      B     
1  顧客番号_価格 
2      01_5,000
3      01_5,000 ←ここを、2,000と表示させたい。
------------------------------------

わかる方がおりましたら、ご教示ください。
よろしくお願いいたします。

A 回答 (2件)

分かり易くしかもデータが多くなっても計算に負担のかからない方法は作業列を使って対応する方法です。


また、顧客番号を例えばシート2にA1セルに入力することでシート2のA列に顧客番号を予め並べることもなくすべてのデータを自動的に表示することができます。
シート1のA列からD列の1行目は項目名で2行目から下方にデータが有るとしてE2セルには次の式を入力して下方にドラッグコピーします。

=IF(A2="","",A2*1000+COUNTIF(A$2:A2,A2))

なお、A列のデータが数値でない場合には次のような式でもよいですね。

=IF(A2="","",A2&COUNTIF(A$2:A2,A2))

ここでは先の式で対応することにします。
そこでシート2ではA1セルに検索抽出したい顧客番号を入力します。
A2セルには顧客番号、B2セルには価格と入力します。
A3セルには次の式を入力してB3セルまでドラッグコピーしたのちに下方にもドラッグコピーします。

=IF(COUNTIF(Sheet1!$E:$E,$A$1*1000+ROW(A1))=0,"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH($A$1*1000+ROW(A1),Sheet1!$E:$E,0)),IF(COLUMN(A1)=2,INDEX(Sheet1!$D:$D,MATCH($A$1*1000+ROW(A1),Sheet1!$E:$E,0)),"")))

これでA1セルに入力された顧客番号のデータが自動的に表示されます。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。

私が行おうとしている事と、少し違っていました。
ですが、今後の参考にしたいと思います!

お時間をいただきありがとうございます。

お礼日時:2012/04/21 22:41

こんばんは!


VLOOKUP関数の「FALSE」型は完全一致する最初のデータしか検索できませんので
他の関数を使用します。

普通は「顧客番号」が「01」をすべて表示!といった使い方が多いと思うのですが、
今回はSheet2のA列に顧客番号を入力すると表示された順に価格を表示したい!
というコトですね?

一例です。

↓の画像でSheet2のB2セルに
=IF(A2="","",INDEX(Sheet1!$D$1:$D$1000,SMALL(IF(Sheet1!$A$1:$A$1000=A2,ROW($A$1:$A$1000)),COUNTIF($A$2:A2,A2))))

これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定します。

この画面からコピー&ペーストする場合はB2セルに貼り付け後、数式バー内で一度クリック!
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

これをオートフィルで下へコピーすると画像のような感じになります。

※ 条件として、Sheet1の顧客番号数より多くを入力するとエラーになってしまいます。

参考になりますかね?m(_ _)m
「エクセル VLOOKUP 番号重複でも表」の回答画像1

この回答への補足

すみません。理解できました。
配列数式の理解が足りなかったみたいです。

お手間をおかけいたしました。
ありがとうございます!

補足日時:2012/04/22 00:01
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。

とても参考になりました!
そこで、再度質問なのですが、
(Sheet1!$A$1:$A$1000=A2,ROW($A$1:$A$1000)
↑ここの部分は、どのような意味なのでしょうか??

重ね重ね申し訳ございません。
よろしくお願いいたします。

お礼日時:2012/04/21 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!