• 締切済み

エクセルについて質問です。

エクセルについて質問です。 オートフィルタ機能を使わずに関数を使ってデータの抽出を行いたいです。 例として 種別      ファイル名 官庁      申請書 工事      高圧 設計      高圧 工事      低圧 官庁      高圧 このような表で、種別用条件入力セルと、ファイル名用条件入力セルをどこかに作って [種別用条件入力セル]に工事と入力すると、 工事      高圧 工事      低圧 が抽出され [ファイル名用条件入力セル]に高圧と入力すると 工事      高圧 設計      高圧 官庁      高圧 が抽出されるイメージです。 どなたか教えてください。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

「フィルタオプションの設定」を使用すればイメージされるような抽出が可能ですので以下の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キーを同時押下、縦横にコピー

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答番号: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)
回答No.1

 今仮に、元の表の種別が並んでいるのが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つの条件を同時に満たしているデータのみが抽出され、片方のみしか満たしていないデータは表示されません。

ns-e
質問者

補足

さっそくの回答ありがとうございます。 上記のとうり入力しましたが、うまくいきません。 関数の意味を理解できていないので、原因がわかりません。 やりたいこととしてはkagakusukiさんのとうりでOKです。 なにが原因でしょうか?

関連するQ&A