【Excel】ひとつでも条件を満たす場合にフィルター表示するには?OR条件でのフィルター抽出方法について

フィルターの機能を使えば、複数の列ごとに条件を指定して、すべてを満たす行だけを抽出して表示することができることを前回の記事でお伝えしました。
関連記事

複数の列で、特定の条件を満たす行だけを抽出したい場面が実務ではよくあります。 たとえば、下の表のように、学生ごとの成績が一覧となったデータがある場合。 このデータのうち、全科目が「優」か「秀」の人だけを抽出して表示させたい場合、ひと[…]

では、複数の列ごとに条件を指定して、ひとつでも満たす行だけを抽出して表示したい場合は、どうすればいいでしょうか。

 

たとえば、下の表のような「秀」「優」「良」「可」「不可」の5段階評価の表について、以下の条件を満たす行だけを抽出したい場合は、どうすればよいでしょうか。
  • ひとつでも「秀」がある行を抽出したい場合
  • 二つ以上「秀」がある行を抽出したい場合

 

また、下の表のような点数表について、以下の条件を満たす行だけを抽出したい場合は、どうすればよいでしょうか。
  • ひとつでも95点以上がある行を抽出したい場合
  • 二つ以上95点以上がある行を抽出したい場合

 

少し複雑な条件でのデータ抽出です。
フィルター機能を使うところは一緒ですが、もうひと手間加えてあげる必要があります。
今回は、複雑な条件でのフィルター抽出のやり方について解説します。

 

スポンサードリンク

フィルターの詳細設定を使いこなせば、OR条件での検索もできる

通常のフィルター機能では、すべてのフィルター条件を満たす行だけを抽出する、いわゆるAND条件での検索しかできません。
A列あるいはB列で条件を満たす行を抽出する、いわゆるOR条件での検索はできないのです。
英語の評価が「秀」 AND 数学の評価が「秀」 の抽出はできるが
英語の評価が「秀」 OR 数学の評価が「秀」 の抽出はできない
(いまいちイメージが湧かなくても大丈夫。このあと図で説明します)

 

でも、あまり知られていませんが、フィルター機能にもOR条件で検索する機能が備わっています。
フィルターボタンの右下にある「詳細設定」をクリックしてみましょう。

 

「フィルターオプションの設定」という入力画面が表示されました。
この画面、いまいちどう操作すればのか分かりにくいです。

 

フィルターオプションの設定でフィルター条件を入力する方法

 

フィルターオプションの設定では、通常のフィルターのように、▽マークをクリックして表示したい文字だけ選んでいく、というお手軽な方法が使えません。
では、どうすればよいか説明します。

 

今回は、ひとつでも「秀」がある行を抽出したいと思います。
まずは、別のシートを作って、フィルターをかけたい表とまったく同じ表の冒頭部分をコピーします。

 

コピーしたシートに、以下のようにフィルター設定のための入力をします。(意味は後で解説します)

 

フィルターをかけたい表に戻って、「フィルターオプションの設定」画面を開きます。
「リスト範囲」にはフィルターをかけたい表の範囲を、「検索条件範囲」にはフィルター設定用に作ったシートの入力範囲を設定します。

 

[OK]をクリックすると、ひとつでも「秀」がある行だけがフィルターで抽出されました。

 

フィルターオプションの「検索条件範囲」は何を入力すればいいの?

たぶん、「検索条件範囲」は何を入力しているのか、ということが分からずにつまずく人が多いのではないでしょうか。
検索条件範囲の設定は、はじめてだと結構難解です。

 

検索条件には、横方向には「すべてを満たす場合にフィルターする条件(AND条件)」を、
縦方向には「いずれかを満たす場合にフィルターする条件(OR条件)」を定義しています。
今回の例だと、以下のような条件を定義していることになります。
  • 2行目の「英語が秀であること」を満たすものを抽出する。
  • あるいは、3行目の「数学が秀であること」を満たすものを抽出する。
  • あるいは、4行目の「政治が秀であること」を満たすものを抽出する。
  • あるいは、5行目の「経済が秀であること」を満たすものを抽出する。
  • あるいは、6行目の「民法が秀であること」を満たすものを抽出する。
  • あるいは、7行目の「商法が秀であること」を満たすものを抽出する。
AND条件がひとつだけだとイメージが湧きにくいと思います。
なので、今度は2科目以上で「秀」がある行を抽出してみましょう。
フィルター設定のための入力は、以下のようになります。

 

長いうえに意味が分からなくなったかもしれません。
高校数学を覚えている人ならイメージしやすいかもしれませんが、この表では「英語から商法までの6科目のうち、いずれか2科目が『秀』である組み合わせ」を抽出するよう設定しています。
高校数学の教科書で載っている表現を使うと、「6C2の組み合わせ」を羅列しているということです。
6種類のタマのうち、無作為に2つを取り出したときの組み合わせは、6C2、つまり、(6×5)/(2×1)=15パターンです。
この15パターンをすべて書き出しているというわけですね。
2行目では英語と数学が「秀」のパターンを、
3行目では英語と政治が「秀」のパターンを、
4行目では英語と経済が「秀」のパターンを、・・・というように、
AND条件では「2科目が『秀』であること」、
OR条件で、「その2科目はどのパターンでもよいこと」を条件付けしているということです。

 

言葉にしても分かりにくいですが、機能を使ってみて慣れていくしかないのかな、という感じです。
今度はもう少し複雑な、一定の数値条件を満たす場合のフィルターの抽出条件を見てみましょう。

 

一定以上の数値をフィルターオプションで抽出条件にしたい場合

では、「成績表から1科目でも95点以上がある人だけを抽出する」という場合は、どのように抽出条件を設定すればよいでしょう。
先ほどのように「秀」とだけ入力するよりもひと手間必要になりますが、考え方は一緒です。
フィルター設定用のシートに、「>=95」と入力することで、抽出できます。

 

『>=』とかいう謎の記号が出てきました。
これは「演算子」と呼ばれるもので、数字が一定の数字より大きいか小さいか、等しいか等しくないかといった、数字の関係性を示す記号です。
演算子には、以下のような種類があります。
記号 意味
>=95 95以上の場合にTRUE(抽出される)
<=95 95以下の場合にTRUE(抽出される)
>95 95より大きい場合にTRUE(抽出される)
<95 95未満の場合にTRUE(抽出される)
<>95 95以外の場合にTRUE(抽出される)

 

今回は、1科目でも95点以上があればTRUE、つまりフィルター抽出の対象になるということです。
2つ以上95点以上がある行だけを抽出する場合は、「秀」が2つ以上ある行を抽出するときと同じく、フィルター設定用のシートの行ごとに2か所『>=95』を入力すればOKです。

 

フィルターの詳細設定よりも簡単に複雑な条件を指定するには、関数を使うと良い

ここまで、フィルターの詳細設定について解説をしてきましたが、実際のところフィルターの詳細設定を使う機会というのは多くないと思います。
その理由は、関数で条件を定義してあげたほうが、はるかに簡単だから。

 

たとえば、『秀』の数に応じてフィルターを設定したい場合。
表の外の、使っていない部分に、『秀』の数を計算するための列を追加します。
数式は、条件を満たすセルの数を数えるCOUNTIF関数を使います。

 

あとは、通常のフィルターのように▽ボタンを押せば、行ごとの『秀』の数が表示されるので、表示させたい数にチェックをつけるだけです。

 

同じく、95点以上の科目数についても、COUNTIF関数を使えば簡単に計算できます。
検索条件は”>=95″、つまり95点以上のセルの数を数えるように設定します。
関数の詳しい使い方については別の機会で解説したいと思いますが、フィルターのためにシートを新しく作るよりも、はるかに簡単ですね。

 

まとめ

フィルターの詳細設定は、あまり分かりやすい機能ではありません。
とりあえず「フィルターの詳細設定という機能があって、細かいルールでデータ抽出できる」ということを覚えておくと、いつか何かの役に立つかも?
ですが、特に列を追加しても支障がないのであれば、IF関数やCOUNTIF関数などを使って集計用の列を作ってあげるのが簡単です。
必要に応じて使い分けができると、業務効率もよくなって勤務時間を削減できるかもしれません。