- ベストアンサー
エクセルのデータ検索・抽出 について
不動産の物件リストを作っているのですが 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 他の関数等で対応できそうでしょうか? ご教示お願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
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)
Googleで「imogasi方式」で照会してください。imogasi方式と類似した解法が既に本会等に、でていますが、私以外の回答者の、異なる解法も出ています。 それに関数によるにぃだし問題は、毎日のようにこの質問コーナーに出ており、照会がどうにかならないか。 ーーー また関数で抜き出し問題は得意じゃない。作業列を使ったり、式が長い、式が難しい(imogasi方式の質問の回答の中に散見される、作業列を使わない方法)。 ーー フィルタ フィルタオプションの設定 ピボットテーブル(普通分類全体が出るが、取引先でページ指定すれば指定変えで瞬時に表示が取引先Bに変わる。 VBA などを研究すべきだ。ピボットがお勧め。
関数が分からない貴方には(関数を一切使用しない)[フィルタオプションの設定]に依るのが最も簡単かと。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々方法はあると思いますが・・・ 作業列を使った一例です。 ↓の画像の上側が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)
シート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)))