- Home »
- Excelの基本操作の目次 »
- フィルター(データ抽出) »
- 複雑な条件でデータを抽出したい2(詳細設定・オートフィルター)
- Excelで複雑な条件でデータを抽出したいときは「詳細設定(VBAでは AdvancedFilter)」を使うというのが基本ですが、この機能を使ってデータを抽出する場合、検索条件を設定する必要があります。
ここで問題となるのが検索条件を書き出すことができない場合にはどのように対処するかです。
実は条件を数式で示すことができれば、詳細設定はもちろんのこと、オートフィルターでもデータを自在に抽出することができてしまいます。
- 例えば、5教科のテスト結果のデータがあります。
このデータから2科目以上が80以上の人をリストアップする場合はどのように検索条件を書けばよいのでしょう?
- 検索条件を書くことができましたか?
検索条件を書くとすれば、下記のような感じになると思います。
- データリスト内のセルを1つ選択して、[データ]タブの[詳細設定]を実行します。
- リスト範囲は A1:I21
検索条件範囲は L1:P11
抽出先は「指定した範囲」にチェックを入れて、 抽出範囲に A24 と設定しました。
- 10個のデータが抽出できました。
- 検索条件を書き出すことができた人はデータが抽出できるのですが、こんな条件をすぐに書ける人はそう多くないのでは?
なかなか書くことができないと思いますが、条件を数式で書くとすれば、割と容易に思いつくのではないでしょうか?
80以上の数を求めるのは COUNTIF関数で =COUNTIF(E2:H2,">=80") として求めることができます。
求めたいのは2科目以上なわけですから、 =COUNTIF(E2:H2,">=80")>=2 とすればよいと思います。
引数の80以上を " でくくるのがこの関数のポイントになります。
- K1セルにデータリストの列見出しに使われていない文字列 「条件」と入力しました。文字列を入力せず、空欄のままでも構いませんが、ここでは説明上わかりやすくするために入力しました。
K2セルに 数式 =COUNTIF(E2:H2,">=80")>=2 を入力しました。
- データリスト内のセルを1つ選択して、[データ]タブの[詳細設定]を実行します。
- リスト範囲は A1:I21
検索条件範囲は L1:P11
抽出先は「指定した範囲」にチェックを入れて、 抽出範囲に A24 と設定しました。
- 10個のデータが抽出できました。
- このような複雑な条件でデータを抽出するのは 詳細設定でないとできないのでは? と思われがちですが、作業列を使えば、オートフィルターでも同じことができます。
- データリストの右の列、J1セルに「作業列」と入力しました。
J2セルには =COUNTIF(E2:H2,">=80") と80以上の科目数を求める数式を入力しました。
J2セルを選択し、オートフィルボタンをダブルクリックして、下方向へ数式をコピーします。
- データリスト内のセルを1つ選択して、[データ]タブの[フィルター]を実行します。
「作業列」のフィルターボタンをクリックして、 2,3,4のチェックボックスにチェックを入れ、[OK]ボタンをクリックします。
- 10件のデータが抽出できました。
- 抽出されたデータだけをコピー&貼り付けしたい場合は、範囲内のセルを1つ選択して、 Ctrl + A でセル範囲を選択し、 Alt + ; (セミコロン) で可視セルを選択します。あとは、Ctrl + C でコピーし、貼り付け先のセルを選択して、Ctrl + V で貼り付けします。
Home|Excelの基本操作の目次|複雑な条件でデータを抽出したい2(詳細設定・オートフィルター)