- 締切済み
エクセルについて質問です。
エクセルについて質問です。 オートフィルタ機能を使わずに関数を使ってデータの抽出を行いたいです。 例として 種別 ファイル名 官庁 申請書 工事 高圧 設計 高圧 工事 低圧 官庁 高圧 このような表で、種別用条件入力セルと、ファイル名用条件入力セルをどこかに作って [種別用条件入力セル]に工事と入力すると、 工事 高圧 工事 低圧 が抽出され [ファイル名用条件入力セル]に高圧と入力すると 工事 高圧 設計 高圧 官庁 高圧 が抽出されるイメージです。 どなたか教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
「フィルタオプションの設定」を使用すればイメージされるような抽出が可能ですので以下のURLを参考にして下さい。 因みに関数ならば、仮に元データをsheet1、sheet2に種別用、sheet3をファイル用として、sheet2/sheet3のA1にキー入力で以下数式で抽出できます。 (1)sheet2のA2に=IF(COUNTIF(Sheet1!$A:$A,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$2:$A$100=$A$1,ROW(Sheet1!$A$2:$A$100),9999),ROW(A1))),"") を設定、入力完了時にshift+ctrl+enterキーを同時押下、縦横にコピー (2)sheet3のA2に=IF(COUNTIF(Sheet1!$B:$B,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$B$2:$B$100=$A$1,ROW(Sheet1!$A$2:$A$100),9999),ROW(A1))),"") を設定、入力完了時にshift+ctrl+enterキーを同時押下、縦横にコピー
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号:ANo.1です。 申し訳御座いません、パソコン上で表示した数式を、携帯電話を使用して回答文に手入力で写した際に、写し間違いが御座いました。 Sheet3のA1セルに入力する数式は =IF(AND(Sheet1!$A$2&Sheet1!$B$2<>"",Sheet2!$A1&Sheet2!$B1<>"",IF(Sheet1!$A$2="",1,Sheet2!$A1=Sheet1!$A$2),IF(Sheet1!$A$2="",1,Sheet2!$B1=Sheet1!$B$2)),ROW(Sheet2!A1),"") は間違いで、正しくは =IF(AND(Sheet1!$A$2&Sheet1!$B$2<>"",Sheet2!$A1&Sheet2!$B1<>"",IF(Sheet1!$A$2="",1,Sheet2!$A1=Sheet1!$A$2),IF(Sheet1!$B$2="",1,Sheet2!$B1=Sheet1!$B$2)),ROW(Sheet2!A1),"") です。 それから、Sheet1のA5セルに入力する数式は =IF(ROW(A$4:A4)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet2!A:A,SMALL(Sheet3!$A:$A,ROW(A$4:A4)))) は間違いで、正しくは =IF(ROWS(A$4:A4)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet2!A:A,SMALL(Sheet3!$A:$A,ROWS(A$4:A4)))) です。 私の確認が不十分なために、質問者様に御迷惑をかけてしまい、誠に申し訳御座いませんでした。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元の表の種別が並んでいるのがSheet2のA列で、ファイル名が並んでいるのがB列であり、 Sheet1のA2セルに種別を入力し、Sheet1のB2セルにファイル名を入力すると、Sheet1のA列とB列の5行目以下に、抽出されたデータが表示されるものとします。 又、適当な列(ここではSheet3のA列とします)を作業列として使用します。 まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(AND(Sheet1!$A$2&Sheet1!$B$2<>"",Sheet2!$A1&Sheet2!$B1<>"",IF(Sheet1!$A$2="",1,Sheet2!$A1=Sheet1!$A$2),IF(Sheet1!$A$2="",1,Sheet2!$B1=Sheet1!$B$2)),ROW(Sheet2!A1),"") 続いて、Sheet3のA1セルをコピーして、Sheet3のA2以下に貼り付けて下さい。 次に、 Sheet1のA1セルとA4セルに「種別」と入力し、 Sheet1のB1セルとB4セルに「ファイル名」と入力して下さい。 次に、Sheet1のA2セルとB2セルを枠線で囲んで下さい。 次に、Sheet1のA3セルに次の数式を入力して下さい。 =IF(COUNT(Sheet3!$A:$A)=0,"ありません","") 次に、Sheet1のA5セルに次の数式を入力して下さい。 =IF(ROW(A$4:A4)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet2!A:A,SMALL(Sheet3!$A:$A,ROW(A$4:A4)))) 続いて、Sheet1のA5セルをコピーして、Sheet1のB5セルに貼り付けて下さい。 そして、Sheet1のA5~B5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。 以上で完成です。 尚、種別とファイル名のどちらか一方のみを入力した場合には、入力した1つの条件を満たしているデータのみを抽出し、両方とも入力した場合には、入力した2つの条件を同時に満たしているデータのみが抽出され、片方のみしか満たしていないデータは表示されません。
補足
さっそくの回答ありがとうございます。 上記のとうり入力しましたが、うまくいきません。 関数の意味を理解できていないので、原因がわかりません。 やりたいこととしてはkagakusukiさんのとうりでOKです。 なにが原因でしょうか?