- ベストアンサー
エクセルVlookupなどで複数の検索結果を表示させる方法
- エクセルのVLOOKUP関数では、1番最初に該当するデータしか取得できないため、複数の検索結果を表示させる方法を知りたい場合は、他の方法を検討する必要があります。
- 一つの方法は、マクロを使用することです。VBAを使って、検索値に該当する全てのデータを取得し、横に表示させることができます。
- もう一つの方法は、INDEXやMATCH関数を組み合わせて使用することです。INDEX関数を使って、検索値に該当するデータの範囲を指定し、MATCH関数を使って条件を指定することで、複数の検索結果を取得することができます。
- みんなの回答 (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項目まで増加しても変える必要はないでしょう。
その他の回答 (2)
- MackyNo1
- ベストアンサー率53% (1521/2850)
関数なら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)
ご質問はシート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),"")
補足
回答ありがとうございます。 きちんと複数の検索結果があっても、全て引っ張ってきてくれました。 感動です!!! 後、引っ張ってくる項目が【営業所】・【電話番号】の他に【住所】、【担当者】など増える場合は、どうしたら良いのでしょう? 全部で5~6項目ぐらいになりそうです。。。
お礼
KURUMITOさんのおかげで無事、データが完成しました。 本当に助かりました。 ありがとうございました。