• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル Vlookupなどで複数の検索結果を表示させる方法)

エクセルVlookupなどで複数の検索結果を表示させる方法

このQ&Aのポイント
  • エクセルのVLOOKUP関数では、1番最初に該当するデータしか取得できないため、複数の検索結果を表示させる方法を知りたい場合は、他の方法を検討する必要があります。
  • 一つの方法は、マクロを使用することです。VBAを使って、検索値に該当する全てのデータを取得し、横に表示させることができます。
  • もう一つの方法は、INDEXやMATCH関数を組み合わせて使用することです。INDEX関数を使って、検索値に該当するデータの範囲を指定し、MATCH関数を使って条件を指定することで、複数の検索結果を取得することができます。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No1です。項目が増える場合ですが項目が3つになれば次の式になります。 =IF(COUNTIF(Sheet2!$A:$A,$A2)>=ROUNDUP(COLUMN(A1)/3,0),INDEX(Sheet2!$A:$G,MATCH($A2,Sheet2!$A:$A,0)-1+ROUNDUP(COLUMN(A1)/3,0),MOD(COLUMN(A1)-1,3)+2),"") 項目が増える場合ですが、この式で数値が3になっているところを4項目になれば4に変えます。なお、No1ではINDEX(Sheet2!$A:$C,を今回はINDEX(Sheet2!$A:$G,に変更しています。上の式では6項目まで増加しても変える必要はないでしょう。

wolf001
質問者

お礼

KURUMITOさんのおかげで無事、データが完成しました。 本当に助かりました。 ありがとうございました。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

関数ならB2セルに以下のような数式を入力し、右方向および下方向にオートフィルします。 ただし表示するデータ量が多いと動きが重くなりますので、そのような場合は一部範囲のみ数式を入力してデータ処理したら最後の行以外の数式は「値」に変換しながら作業するとよいと思います。 =INDEX($B:$C,SMALL(INDEX((Sheet2!$A$2:$A$30000<>$A2)*30000+ROW(Sheet2!$A$2:$A$30000),),INT((1+COLUMN(A1))/2)),MOD(COLUMN(B1),2)+1)&""

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

ご質問はシート2のデータがあったときにシート1の表をA列に会社名があるときにそれを完成させたいとのことでしょうか? シート2ではA列を重点に並べ替えが行われており同じ会社同士が連続した行に表示されているとします。 B2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(COUNTIF(Sheet2!$A:$A,$A2)>=ROUNDUP(COLUMN(A1)/2,0),INDEX(Sheet2!$A:$C,MATCH($A2,Sheet2!$A:$A,0)-1+ROUNDUP(COLUMN(A1)/2,0),MOD(COLUMN(A1)-1,2)+2),"")

wolf001
質問者

補足

回答ありがとうございます。 きちんと複数の検索結果があっても、全て引っ張ってきてくれました。 感動です!!! 後、引っ張ってくる項目が【営業所】・【電話番号】の他に【住所】、【担当者】など増える場合は、どうしたら良いのでしょう? 全部で5~6項目ぐらいになりそうです。。。

関連するQ&A