- ベストアンサー
エクセル2010で複数条件からデータを抽出する方法
- エクセル2010で複数の条件からデータを抽出する方法を教えてください。
- データリスト中から特定の条件を満たすデータを抽出する方法について教えてください。
- 複数の文字リストを含む列を抽出するにはどうすればよいでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 一例です。 ↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。 Sheet1(別Sheetでも構いません)に検索データを入力する表を作成しておきます。 今回はSheet1のF1~F10セルに検索データを入力するとします。 空白セルは参照しないようにします。 そのため、画像のアスタリスクはまず使用することはないであろう文字として入力しています。 作業用の列D2セルに =IF(OR(ISNUMBER(FIND(F$1:F$10,A2))),ROW(),"") これは配列数式になりますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はD2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 D2セルをオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のA2セル(配列数式ではありません)に =IFERROR(INDEX(Sheet1!A:A,SMALL(Sheet1!$D:$D,ROW(A1))),"") という数式を入れ、列・行方向にオートフィルでコピー! これで画像のような感じになります。 尚、今後検索データが増える場合は「*」部分に検索データを入れるだけでSheet2に表示されます。m(_ _)m
その他の回答 (5)
- keithin
- ベストアンサー率66% (5278/7941)
- KURUMITO
- ベストアンサー率42% (1835/4283)
三鷹市と武蔵野市のどちらかを含む場合の抽出でしたら「並べ替えとフィルター」から「フィルター」を選択します。 その後に「フィルター」の▼印をクリックして「テキストフィルター」から「指定の値を含む」で表示される画面の上の窓には三鷹市、ORを選択してから下の窓には武蔵野市を入力してOKすればよいでしょう。 3つ以上に検索項目が増える場合には上記の方法では対応することができませんので次のようにすればよいでしょう。 例えばシート1のA2セルから下方に住所が入力されているとします。 作業列を使って対応します。 なお、SUMPRODUCT関数などを使う方法はデータが多くなった場合や検索項目が多くなった場合には計算の速度も遅くなります。出来るだけ簡単な式で対応することです。 お求めの抽出結果をシート2に表示させるとしてシート2のA2セルから横方向に検索したい文字列を入力します。 例えばシート2のA2セルに三鷹市、B2セルに武蔵野市、C2セルに西東京市・・・・ ここではD2セルまでにデータが入力される場合にも対応できる方法を示します。 シート1ではA2セルから下方に住所が入力されG列まで他の項目列が有り利用されているとします。 H列を作業列としてH2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(AND(Sheet2!$A$2<>"",ISNUMBER(FIND(Sheet2!$A$2,A2))),MAX(H$1:H1)+1,0)+IF(AND(Sheet2!$B$2<>"",ISNUMBER(FIND(Sheet2!$B$2,A2))),MAX(H$1:H1)+1,0)+IF(AND(Sheet2!$C$2<>"",ISNUMBER(FIND(Sheet2!$C$2,A2))),MAX(H$1:H1)+1,0)+IF(AND(Sheet2!$D$2<>"",ISNUMBER(FIND(Sheet2!$D$2,A2))),MAX(H$1:H1)+1,0)) シート2のA4セルからG4セルにはシート1の1行目の項目名をコピーして貼り付けます。 シート2のA5セルには次の式を入力してG5セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$H:$H),"",IF(INDEX(Sheet1!$A:$G,MATCH(ROW(A1),Sheet1!$H:$H,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$G,MATCH(ROW(A1),Sheet1!$H:$H,0),COLUMN(A1))))
お礼
回答ありがとうございます。
- web2525
- ベストアンサー率42% (1219/2850)
フィルタオプションでの抽出 http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、 東京都三鷹市 東京都武蔵野市 東京都港区 福岡県福岡市 福岡県北九州市 等の住所がSheet1のA2以下に入力されていて、Sheet1のB列~C列には、住所以外のデータが入力されているものとします。 尚、Sheet1の1行目は、「住所」といった文字列等の、その列に入力されているデータの項目名が入力されているものとします。 そして、Sheet2のA1~A5の範囲内に、 東京都三鷹市 東京都武蔵野市 東京都西東京市 ・ ・ ・ という具合に、抽出条件となる住所が入力されていて(Sheet2のA1~A5の範囲内には空欄のセルもあり)、Sheet2のC列~E列に、抽出結果を表示するものとします。 又、Sheet3のA列を作業列として使用するものとします。 まず、Sheet3のA2セルに次の数式を入力して下さい。 =IF(INDEX(Sheet1!$A:$A,ROW())="","",IF(SUMPRODUCT(ISNUMBER(FIND(CHAR(1)&Sheet2!$A$1:$A$5,CHAR(1)&INDEX(Sheet1!$A:$A,ROW())))*(Sheet2!$A$1:$A$5<>"")),ROW(),"")) 次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。 次に、Sheet2のC1セルに次の数式を入力して下さい。 =Sheet1!$A$1 次に、Sheet2のD1セルに次の数式を入力して下さい。 =Sheet1!$B$1 次に、Sheet2のE1セルに次の数式を入力して下さい。 =Sheet1!$C$1 次に、Sheet2のC2セルに次の数式を入力して下さい。 =IF(ISERROR(1/(INDEX(Sheet1!$A:$C,SMALL(Sheet3!$A:$A,ROWS($2:2)),MATCH(C$1,Sheet1!$A$1:$C$1,0))<>"")),"",INDEX(Sheet1!$A:$C,SMALL(Sheet3!$A:$A,ROWS($2:2)),MATCH(C$1,Sheet1!$A$1:$C$1,0))) 次に、Sheet2のC2セルをコピーして、Sheet2のD2~E2の範囲に貼り付けて下さい。 次に、Sheet2のC2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。 そして最後に、Sheet2のA1~A5の範囲に、抽出条件となる住所を、都道府県名から入力して下さい。 以上で準備は完了で、後はSheet1の2行目以下に、各データを入力するだけで、Sheet2のC列~E列に抽出したデータが表示されます。
お礼
回答ありがとうございます。 大変勉強になりました。
お礼
回答ありがとうございます。 新しい関数を学べました。