• ベストアンサー

エクセルのデータ検索・抽出 について

不動産の物件リストを作っているのですが sheet1に  A列     B列     C列     D列 取引先A  物件所在1   面積1    備考1 取引先A  物件所在2   面積2    備考2 取引先B  物件所在3   面積3    備考3 取引先A  物件所在4   面積4    備考4 とデータが入っており 取引先Aに該当するデータをsheet2に抽出したいのですが vlookup関数だと1番目のデータしか抽出できず困っています。 ↓のようになってしまいます。  A列     B列     C列     D列 取引先A  物件所在1   面積1    備考1 取引先A  物件所在1   面積1    備考1 取引先A  物件所在1   面積1    備考1 他の関数等で対応できそうでしょうか? ご教示お願いいたします。

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

  • ベストアンサー
noname#99913
noname#99913
回答No.2

Sheet2の (1)A1に「取引先A」と入力 (2)B1に「=OFFSET(Sheet1!$A$1,$E1-1,COLUMN()-1)」と入力し、C1、D1へコピー (3)A1:D1を下へ3行目までコピー (4)E1に「=MATCH(A1,Sheet1!A:A,0)」と入力 (5)E2に「=E1+MATCH(A2,INDIRECT("Sheet1!A"&E1+1&":A"&COUNTA(Sheet1!A:A)),0)」と入力し、E3へコピー A列のデータは連続しているという前提で作ってあります。もし空きがある場合は、 (5)E2に「=E1+MATCH(A2,INDIRECT("Sheet1!A"&E1+1&":A1000"),0)」と入力し、E3へコピー とし、「A1000」のところは、データ数に応じて変えてください。たとえばデータが1000以上ある場合は、「A10000」など。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

Googleで「imogasi方式」で照会してください。imogasi方式と類似した解法が既に本会等に、でていますが、私以外の回答者の、異なる解法も出ています。 それに関数によるにぃだし問題は、毎日のようにこの質問コーナーに出ており、照会がどうにかならないか。 ーーー また関数で抜き出し問題は得意じゃない。作業列を使ったり、式が長い、式が難しい(imogasi方式の質問の回答の中に散見される、作業列を使わない方法)。 ーー フィルタ フィルタオプションの設定 ピボットテーブル(普通分類全体が出るが、取引先でページ指定すれば指定変えで瞬時に表示が取引先Bに変わる。 VBA などを研究すべきだ。ピボットがお勧め。

noname#204879
noname#204879
回答No.4

関数が分からない貴方には(関数を一切使用しない)[フィルタオプションの設定]に依るのが最も簡単かと。

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

こんにちは! 色々方法はあると思いますが・・・ 作業列を使った一例です。 ↓の画像の上側がSheet1で下側がSheet2になります。 まずSheet1の作業列E2セルに =IF(COUNTIF(A2,Sheet2!$E$2)=1,ROW()-1,"") として下へオートフィルでコピー 次にSheet2のA2セルに =IF(COUNT(Sheet1!$E$2:$E$5)>=ROW()-1,INDEX(Sheet1!A$2:A$5,SMALL(Sheet1!$E$2:$E$5,ROW()-1)),"") として行方向・列方向両方にオートフィルでコピーしていきます。 これで希望に近い形にならないでしょうか? 尚、余計なお世話かもしれませんが、Sheet2のE2セルに 取引先名を入力するとそのデータが反映されるようにしています。 以上、参考になれば幸いです。m(__)m

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

シート2のA1セルには検索して取り出したい取引先名を入力します。 そこで、シート1のE2セルに次の式を入力し下方にオートフィルドラッグします。 =IF(A2="","",IF(A2=Sheet2!A$1,MAX(E$1:E1)+1,"")) これで検索する取引先名について上から番号が付けられます。 シート2では次のようにします。 仮に2行目に項目名があるとして A3セルには次の式を入力してD3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$E:$E,ROW(A1))=0,"",INDEX(Sheet1!$A:$D,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))