• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VLOOKUP 番号重複でも表示させたい)

Excel VLOOKUPで重複する番号でも表示させたい

このQ&Aのポイント
  • ExcelのVLOOKUP関数を使用して、重複する番号でも表示させたいです。
  • 顧客番号が重複しているため、正しい価格を表示できません。
  • 別のシートで表を検索し、価格を表示させたい場合、VLOOKUP関数を使って顧客番号に基づき価格を取得できます。しかし、重複した番号の場合、最初にマッチした値しか表示されません。この問題を解決するために、他の関数や方法を使わなければなりません。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 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

10dummy09
質問者

お礼

回答いただきありがとうございます。 とても参考になりました! そこで、再度質問なのですが、 (Sheet1!$A$1:$A$1000=A2,ROW($A$1:$A$1000) ↑ここの部分は、どのような意味なのでしょうか?? 重ね重ね申し訳ございません。 よろしくお願いいたします。

10dummy09
質問者

補足

すみません。理解できました。 配列数式の理解が足りなかったみたいです。 お手間をおかけいたしました。 ありがとうございます!

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.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セルに入力された顧客番号のデータが自動的に表示されます。

10dummy09
質問者

お礼

回答いただきありがとうございます。 私が行おうとしている事と、少し違っていました。 ですが、今後の参考にしたいと思います! お時間をいただきありがとうございます。

関連するQ&A