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

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

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

エクセル Vlookupなどで複数の検索結果の表示 下記の様な2シートがあります。 【sheet1】 会社名 営業所1 電話番号1 営業所2 電話番号2 営業所3 電話番号3 A会社 北海道 011-1111-**** 東京 03-1111-**** 大阪 06-9999-**** B会社 C会社 D会社 E会社 ・ ・ ・ ・ 【sheet2】 会社名 営業所 電話番号 A会社 北海道 011-1111-**** A会社 東京 03-1111-**** A会社 大阪 06-9999-**** C会社 神奈川 00-0000-**** E会社 名古屋 99-9999-**** E会社 岡山 01-2345-**** ・ ・ ・ ・ 【sheet1】の会社名を検索値として、【sheet2】からそれに該当する全ての営業所・電話番号のデータを横に表示させたい場合は、どうしたら良いでしょうか? vlookup関数だけでは、1番最初に該当するデータしか引っ張ってきてくれません。。。 ちなみに項目ごとにセルは分かれており会社名は、重複するものがないものとします。 データ件数的には、3万件ほどのデータ量があります。 マクロでも構いません。何かイイ方法はないでしょうか? ご教授願います。

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

  • ベストアンサー
  • 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

  • excelのVLOOKUPで検索値を2つにできますか?

    excelのVLOOKUPで検索値を2つにしたいです 私の知っているVLOOKだと下記のことは対応できます 例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合 「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます そこで質問です 「会社名と住所が検索値と同一なら電話番号を表示しなさい」 というような、複数の検索値を持つ事はできないのでしょうか? 参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

  • VLOOKUPの検索範囲を入力に応じて変えたい

    Excel2007を使用しています。 個人別で経費データシートを入力し、全員の当月分データを別シート1枚にまとめようとしています。 当月分データシートJ2番地に指定番号を入力すると、個人シートからデータを参照してくる形を取りました。 =IF($J2="","",VLOOKUP($J2,社員名!$A$5:$I$2004,3,0)) この数式内検索範囲を、指定番号に応じてその該当する社員名に自動で変えることは可能でしょうか? ・J2 山田氏用指定番号  =IF($J2="","",VLOOKUP($J2,山田!$A$5:$I$2004,3,0)) ・J2 佐藤氏用指定番号  =IF($J2="","",VLOOKUP($J2,佐藤!$A$5:$I$2004,3,0)) 指定番号に応じて検索範囲の個人シートも変わり、それぞれのデータを拾ってくるようにしたいです。 もしくはもっと別に良い方法がありましたら教えていただきたいです。 質問がわかりづらかったら申し訳ありません。 上記関数もネット検索を繰り返しながらといったレベルです。

  • 複数のEXCELファイルより結果検索(VLOOKUP)

    はじめましてご教授お願いいたします。 現在エクセル関数Vlookupを使用しているのですが 外部の複数エクセルファイルよりデータを抽出するには どうすればよろしいのでしょうか? エクセルファイルA,B,C,Dがあるのですが ファイルAには結果表示用のシートがあります B,C,Dにはそれぞれデータが同じように配置されおります。 ファイルAのシート2セルA1に以下のような関数を記述しております =IF(ISBLANK(A2),"",IF(VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE)=0,"",VLOOKUP(A2,Sheet1!$A$2:$K$60000,2,FALSE))) 上記関数[Sheet1!A2:K60000]の部分に別ファイルB,C,Dの データ(範囲は同じ)も検索できるようにしたいのですが どのような関数で可能なのでしょうか? ご教授よろしくお願いいたします。

  • Vlookup関数で検索結果がエラーになってしまう

    お世話になります。 Vlookup関数の質問となります。 =VLOOKUP(C2,Sheet2!$A$2:$E$685,1,FALSE) 検索値  →リストを使用(元データはSheet2の指定したセル範囲の表の2列目のデータ) 範囲 →Sheet2の特定のセル範囲 列番号 →1(ここは100-01、100-02などの番号が入力されています) 検索方法 →false(完全一致) この式で「#N/Aエラー」が発生してしまいます。 単純に「氏名」から「社員番号」を引っ張りたいだけなのですが、 なんでエラーになるのでしょうか? 範囲に指定した表には空白行はありますが、書式設定などは特に問題はないです。 恥ずかしい質問なのは十分に理解していますが、 教えて頂きたく思います。 よろしくお願い致します。

  • VLOOKUPの検索値の集計について

    複数シートのデータをVLOOKUPを使って、sheet1(B2~B50)に検索表示させ、更にその値を縦集計し、sheet1(B1)に表示させたいのですが、検索値が文字列のため集計ができません。 VLOOKUPの式に、文字列を数値に変換するように組み込む方法があれば教えてください。 (元データの表示形式は「標準」になっております。) sheet1(B2~B50)には、現在このような式を入れています↓ =IF(COUNTIF(sheet2!$A$2:$E$50,sheet1A!$2),VLOOKUP(sheet1!$A2,sheet2!$A$2:$E$50,2,FALSE)*1,"")&IF(COUNTIF(sheet3!$A$2:$E$50,sheet1!$A2),VLOOKUP(sheet1!$A2,sheet3!$A$2:$E$10,2,FALSE)*1,"")

  • VLOOKUPについて(参照先で長文、複数表示)

    VLOOKUPについて質問です。 エクルのシートに「リスト」と名前をつけ、横並びでA列に「番号」、B列に 「会社名」C列に「住所」D列に「電話番号」E列に「URL}というデータを入れてあります。 それを別のシートに表示させたくて以下のように表記しています。 =VLOOKUP(A2,リスト!,A2:E50,2,FALSE) いくつか表示させていて、表示させたい内容によってFALSEの前の数字を変えています。 これで表示させたいシートのA2セルに番号を入れることでそれぞれのデータが表示させられています。 そこでいくつか質問です。 □住所が長すぎて表示させたいシートのセルに収まりきらない場合、全て見れるようにするにはどうすれば良いですか? □改行されているデータも表示先のセルが1行分だと見れないのでしょうか? □元データの文字色や背景色は表示させられないのでしょうか? □表示されてるデータをコピーできますか? □同じシートで複数の参照(番号1と番号2のデータなど)をしたくて最初の「A2」部分(「B2」とかにして番号を入力する場所)を増やしてみましたが、B2とした方には表示されませんでした。同じデータから違う番号のデータも参照するというのは無理なのでしょうか?(同じ番号の項目を複数参照することはできました) わからないことだらけですので、1つでもわかることがあればお教え下さい。 こんな風に記載するんだよと、例文のようなものを頂けると助かります。 よろしくお願いします。

  • エクセルVLOOKUP結果セルを検索可能に

    VLOOKUPで抽出した商品名があります。 セルには、ちゃんと商品名が表示されているのですが このセル列を商品名で「検索」しても該当ナシとなります。 VLOOKUP計算式が邪魔してるのだと思って、式だけ消す方法を 過去Q&Aで探してみましたが判りませんでした。 どなたか教えて頂けると大変助かります。 よろしくお願い致します。

  • エクセル VLOOKUP について

    エクセル関数について教えてください。 通常VLOOKUPは元データの右側の検索だと思いますが 左右両方への検索出来る方法はありますか? 例えば下のような配列の元データ(sheet2)があったとします。   A   B  C   D   E 1 あ  い  う  え  お 2 か  き  く  け  こ 3 さ  し  す  せ  そ sheet1の表「う(C1)」からの検索で左側の「あ(A1)」も右側の「お(E1)」も検索し、sheet1へ表示出来るようにしたいです。 仕事での管理書式で使用したいのですが、元データが客先支給なので配列が変えられません。 VLOOKUPにこだわってませんので何か方法はありますか? よろしくお願いします。

  • 複数のシートに跨ってVLOOKUPするには?

    複数のシートに跨っているデータをVLOOKUPで参照しようとしています。 1つめのシートには コード番号 シート名 の2つのカラムがあり、コード番号ごとに どのシートを参照すればよいかわかるようになっています。 参照されるほうのシートには コード番号 値 の2つのカラムがあります。 このシートが数十存在しますが、1つのシートにまとめることは出来ません。 1つ目のシート上で、 =VLOOKUP(A1,CONCATENATE(B1,"!A:B"),2,false) などと試してみたのですが、うまくいかないようです。 何か良い方法はないでしょうか。

  • Excelでの複数シート間での検索

    2つのシートがあり、 シート1 商品コード 商品名  単価 100    A    50 200    B    70 300    C    80 シート2 商品コード 倉庫  在庫数 100   東京   10 200   東京    5 300   東京    2 200   大阪  100 300   大阪   70 となっています。 目的は、シート2の商品コードをキーとし、シート1の商品コードを検索し、単価を引っぱってきたいのです。 シート1に該当する商品コードがなかった場合は単価は0としたいです。 どのようにしたらよいか、アドバイスいただきたいのですが、よろしくお願いいたします。

専門家に質問してみよう