目次
このチュートリアルでは、Excelでの高度なフィルタの使い方を紹介し、大文字小文字を区別するフィルタの作成、2つの列の一致と差異の検索、小さいリストに一致するレコードの抽出など、自明ではない基準範囲の例を多数挙げています。
前回は、Excelアドバンストフィルターのさまざまな側面と、ANDやORロジックで行をフィルタリングする方法について説明しました。 基本がわかったところで、より複雑な条件範囲の例を見てみましょう。
計算式に基づく基準範囲の設定
このチュートリアルで説明する基準範囲の例のほとんどは、さまざまな数式を含んでいるので、それらを適切に設定するための本質的なルールを定義することから始めましょう。 私を信じて、この小さな理論の断片は、数式に基づいた複数の条件を含む複雑な基準範囲のトラブルシューティングのために、多くの時間を節約して頭痛を免れるでしょう。
- 基準範囲に使用する数式は、次のように評価する必要があります。 真 または FALSE .
- 基準範囲は、少なくとも2つのセルを含む必要があります。 数式セル と ヘッダーセルになります。
- があります。 ヘッダーセル の数式ベースの基準は、空白か、テーブル(リスト範囲)のどの見出しとも異なっている必要があります。
- を評価する式については 各段 の場合、A1 のような相対参照で、データのある最上位のセルを参照します。
- に対してのみ評価される式については 特定細胞 または セル範囲 のような絶対参照を使用して、そのセルまたは範囲を参照します。
- を参照する場合 リスト範囲 の式では、常に絶対セル参照を使用してください。
- 複数の条件を指定する場合は、すべての条件を同じ行に入力して アンド 演算子で結合し、各基準を別々の行に配置して オア 演算子を使用します。
Excelアドバンストフィルターの条件範囲の例
以下の例では、通常のExcelオートフィルターでは実行できない、より複雑なタスクを処理するための独自のフィルターをExcelで作成する方法について説明します。
テキスト値の大文字小文字を区別するフィルタ
Excelオートフィルタと同様に、高度なフィルタツールは、もともと大文字と小文字を区別せずにテキスト値をフィルタリングします。 しかし、高度なフィルタ条件のEXACT関数を使用すると、簡単に大文字と小文字を区別した検索を実行することができます。
を含む行をフィルタリングする場合、例えば バナナ 無視 BANANA と バナナ を選択し、基準範囲に次の数式を入力します。
=EXACT(B5, "バナナ")
ここで、Bは項目名を含む列、5行目は最初のデータ行である。
をクリックし、Excelアドバンストフィルターを適用します。 アドバンスト ボタンをクリックします。 データ タブをクリックし、設定します。 リスト範囲 と 基準範囲 は、以下のスクリーンショットのようになります。 基準範囲 は、2つのセルが含まれています。 ヘッダーセル とのことです。 数式セル .
注:上の画像とこのチュートリアルの他のスクリーンショットは、単にわかりやすくするために基準範囲セルに数式を表示しています。 実際のワークシートでは、最初の行のデータが基準に一致するかどうかによって、数式セルはTRUEまたはFALSEのどちらかを返すはずです。
列の平均値より上または下の値をフィルタリングする
数値をフィルタリングする場合、列の平均値より上または下のセルだけを表示したいことがよくあります。 たとえば、次のような場合です。
小計を含む行をフィルタリングする場合 しゅんばつ の場合、基準範囲に以下の計算式を使用します。
=F5>AVERAGE($F$5:$F$50)です。
小計を含む行をフィルタリングする場合 標準以下 は、次の式を用いてください。
=F5
データのある一番上のセル(F5)を参照する相対参照と、列見出しを除いた平均を計算したい範囲全体を定義する絶対参照を使用していることに注意してください($F$5:$F$50)。
次のスクリーンショットは、上記の平均的な計算式の動作を示しています。
Excelの数値フィルタに慣れている人は、組み込みの数値フィルタにすでに備わっているのに、なぜわざわざ高度なフィルタを使うのかと思うかもしれません。 平均以上 と 平均以下 しかし、Excelに内蔵されているフィルタは、ORロジックでは使用できません。
そこで、この例をさらに発展させ、以下のような行をフィルタリングしてみましょう。 小計 (F欄) オア 9月 売上高 (E列)が平均値以上であることを条件とし、それぞれの条件を別々の行に入力してOR論理で条件範囲を設定します。 その結果、E列またはF列のいずれかが平均値以上である項目のリストが得られます。
空白または非空白を含む行のフィルタリング
Excelのフィルターには、空白セルをフィルタリングするためのオプションが用意されていることはご存知のとおりです。 (空欄) オートフィルタメニューのチェックボックスをオンにすると、1つまたは複数の列に空白または非空白のセルがある行だけを表示できます。 問題は、Excelに組み込まれた空白のフィルタが、AND論理でしか動作しないことです。
空白または非空白のセルをORロジックでフィルタリングする場合、または空白/非空白条件を他の条件と一緒に使用する場合は、次のいずれかの数式で高度なフィルタリング条件範囲を設定します。
フィルター 余白 :
トップセル =""フィルター ノンブランク
トップセル ""ORロジックによる空白セルのフィルタリング
A列、B列のいずれか、または両方の列に空白のセルを持つ行をフィルターするには、次のように高度なフィルターの基準範囲を設定します。
=A6=""
=B6=""
ここで、6はデータの最上位行です。
ANDロジックだけでなくORロジックでも非空白セルのフィルタリングが可能
Excelのアドバンストフィルターが複数の条件でどのように機能するかをより理解するために、サンプルテーブルの行を以下の条件でフィルタリングしてみましょう。
- どちらか 地域 (A列)または 項目 (B欄)は空白でないこと。
- 小計 (C欄)は900より大きいこと。
言い方を変えると、以下の条件を満たす行を表示させたい。
( 小計 >900 アンド 地域 =non-blank) オア ( 小計 >900 アンド 項目 =non-blank)
ご存知のように、Excelの詳細フィルタの条件範囲では、AND論理で結合した条件は同じ行に、OR論理で結合した条件は異なる行に入力する必要があります。
この例では、一方の基準が数式(空白以外)で表現され、もう一方が比較演算子(小計>900)を含んでいるため、念のためお伝えしておきます。
- 比較演算子で形成される基準は、表の見出しと全く同じ見出しを持つ必要があります。 小計 の条件を満たしています。
- 数式ベースの基準は、空白の見出しセルか、テーブルのどの見出しとも一致しない見出しを持つ必要があります。 無記入のもの の条件を満たしています。
上位/下位のNレコードを抽出する方法
ご存知のように、Excelの数値フィルタには、上位10個または下位10個の項目を表示するオプションがあります。 しかし、上位3個または下位5個の値をフィルタリングする必要がある場合はどうでしょうか。 この場合、以下の計算式を備えたExcelアドバンストフィルタが便利です。
抜粋 トップ N項目です。
トップセル >=LARGE()です。 レンジ , N)抜粋 下 N項目です。
トップセル <=SMALL()です。 レンジ , N)例えば、上位3つの小計をフィルタリングする場合、次の式で基準範囲を作成します。
=F5>=LARGE($F$5:$F$50,3)
下位3つの小計を抽出するには、次の式を使用します。
=F5>=SMALL($F$5:$F$50,3)
ここで、F5 はデータのある最上位のセルで 小計 の列(列の見出しを除く)に表示されます。
次のスクリーンショットは、トップ3の計算式の動作を示しています。
注)リスト範囲に同じ値を持つ行がいくつかあり、それが上/下Nのリストに該当する場合、以下のスクリーンショットのように、そのような行がすべて表示されます。
2つの列の一致と相違をフィルタリングする
以前の記事で、Excelで2つの列を比較し、一致と相違を見つけるさまざまな方法を説明しました。 上記のチュートリアルで説明したExcelの数式、条件付き書式ルール、重複排除ツールに加えて、Excelの詳細フィルタを使用して、複数の列で同じまたは異なる値を持つ行を抽出できます。 これを行うには、1つを入力します。を、基準範囲内の以下の簡単な計算式の中から選択します。
- 用フィルター 試合 (重複)を2列で表示します。
=B5=C5
=B5C5
ここで、B5とC5は比較したい2つの列のデータがある最上位のセルです。
注)アドバンスドフィルターツールは、一致・相違の検索のみ可能です。 同列 A列にあり、B列のどこにもない値をすべて求めるには、次の式を使用します。
リスト内の一致する項目をもとに、行をフィルタリングする。
何百、何千もの行を持つ大きなテーブルがあり、ある瞬間に関連する項目だけを含む短いリストを受け取ったとします。 問題は、小さいリストにある、あるいはないテーブルのすべての項目をどのように見つけるかです。
リスト内の項目と一致する行をフィルタリングする
ソース・テーブルで、より小さなリストにも存在するすべての項目を見つけるには、次の COUNTIF 式を使用します。
COUNTIF( リスト・トゥ・マッチ , top_data_cell)小さい方のリストがD2:D7の範囲にあり、そのリストと比較されるテーブルの項目が10行目から始まるB列にあると仮定すると、数式は次のようになります(絶対参照と相対参照の使い分けに注意してください)。
=countif($d$2:$d$7,b10)です。
もちろん、1つの基準だけでテーブルをフィルタリングすることに限定されるわけではありません。
例えば、リストにマッチする行をフィルタリングするために、ただし 北部地域 のみで、2つの条件を同じ行に入力すると、ANDロジックで動作するようになります。
- 地域
="=北"
- お揃いのアイテム
=countif($d$2:$d$7,b10)です。
下のスクリーンショットにあるように、両方の条件に一致するレコードはテーブルの中に2つだけあります。
注)この例では せいごう をテキスト値の基準とする。 ="=North "
と入力すると、指定した文字列と完全に一致するセルだけを検索します。 地域条件を単に ノース (等号と二重引用符を除く) を指定すると、Microsoft Excel は、指定されたテキストで始まるすべての項目を検索します。 北東 または ノースウェスト 詳しくは、テキスト値に対するExcelアドバンストフィルタをご覧ください。
リスト内の項目と一致しない行をフィルタリングする
小さい方のリストにない表中のすべての項目を見つけるには、COUNTIF式の結果が0に等しいかどうかを確認します。
COUNTIF( リスト・トゥ・マッチ , top_data_cell) =0例えば、フィルタリングするために 北部地域 の項目がリストに表示される場合は、以下の条件を使用してください。
- 地域
="=北"
- 非対応のもの
=countif($d$2:$d$7,b10)=0
注意事項
- 一致させるリストが別のワークシートにある場合は、必ずシート名を数式に含めてください(例.
=COUNTIF(Sheet2!$A$2:$A$7,B10)です。
. - 結果を別のシートに抽出したい場合は、「フィルタリングした行を別のワークシートに抽出する方法」で説明したように、抽出先のシートからアドバンストフィルタを起動します。
週末と平日のフィルター
これまで、アドバンストフィルターの条件範囲の例では、主に数値とテキスト値を扱ってきました。 今度は、日付を操作する人たちのヒントになるようなものを紹介しましょう。
Excelに組み込まれた日付フィルターは、多くのシナリオをカバーする幅広いオプションを提供しています。 多くはありますが、すべてではありません!例えば、日付のリストが与えられ、平日と週末をフィルターするよう求められたら、どのように行いますか?
ご存知のように、Microsoft Excelには、指定した日付に対応する曜日を返す特別なWEEKDAY関数があります。 そして、この関数をExcelアドバンストフィルターの条件範囲に使用することになります。
エクセルで週末をフィルタリングする方法
WEEKDAYの項では、1が日曜日、6が土曜日を表すことに留意し、週末をフィルタリングする式は次のようになる。
OR(ウィークデイ) 年月日 )=7, 平日( 年月日 )=1)この例では、B列の5行目から始まる日付をフィルタリングしているので、Weekendsの数式は次のような形になります。
=or(平日(b5)=7, 平日(b5)=1)
Excelで平日をフィルタリングする方法
平日をフィルタリングするには、上記の数式を修正して、1(日曜日)と7(土曜日)を除外するようにします。
AND(ウィークデイ( 年月日 )7、平日(WEEKDAY) 年月日 )1)今回のサンプルテーブルの場合、以下の式でうまくいきます。
=and(平日(b5)7, 平日(b5)1)
さらに、もうひとつ条件を追加して、空白セルをフィルタリングすることができます。 =B5""
ワークシートの日付を他の方法でフィルタリングするには、関連する日付関数を見つけ、高度なフィルタリング基準の範囲内で迷わず使用してください。
さて、これがExcelで複雑な条件を持つ高度なフィルタを使う方法です。 もちろん、選択肢はこのチュートリアルで説明した例に限られるわけではありません。私たちの目標は、正しい方向に進めるように、いくつかのインスピレーションを与えることでした。 マスターへの道は練習で舗装されていることを忘れずに、以下のリンクを使って例をダウンロードし、拡張またはリバース-したい場合があります。をエンジニアに依頼し、理解を深めてもらいました。 読んでくれてありがとうございました!また来週のブログでお会いしましょう。
練習用ワークブック
Excelアドバンストフィルターの例 (.xlsx ファイル)