ExcelのFILTER()関数でAND演算とOR演算を組み合わせて複数のフィルタリング条件を適用する方法 - TechRepublic

ExcelのFILTER()関数でAND演算とOR演算を組み合わせて複数のフィルタリング条件を適用する方法 - TechRepublic
Excelベクター.jpg
画像: 200dgr/Shutterstock

Microsoft Excelで複数の列に複数の条件を適用してデータセットをフィルタリングするのは難しそうに聞こえますが、実際にはそれほど難しくありません。最も重要なのは、列間のロジックを正しく理解することです。例えば、ある列がxで別の列がyであるすべてのレコードを表示したいですか?それとも、ある列がx 、または別の列がyであるすべてのレコードを表示したいかもしれません。結果は大きく異なります。この記事では、ExcelのFILTER()関数にAND演算子とOR演算子を含める方法を説明します。

いくつかの箇所で「AND と OR」という表現が見られますが、これは文法的に不自然です。ここでは AND と OR の演算を総称的に指しています。AND() 関数や OR() 関数は使用しません。読みやすさを向上させるためだけに大文字を使用しています。

参照: すべてのユーザーが習得すべき Excel のヒント 83 選 (TechRepublic)

Windows 10 64ビットシステムでMicrosoft 365を使用しています。FILTER()関数は、Microsoft 365、Excel Online、Excel 2021、iPad版・iPhone版Excel、Androidタブレット・スマートフォン版Excelで利用できます。すべての問題が解決するまで、Windows 11へのアップグレードはお控えいただくことをお勧めします。ご参考までに、デモ用の.xlsxファイルをダウンロードいただけます。

オペレーション

論理演算子 * と + は、式内のオペランド間の関係(それぞれ AND と OR )を指定します。具体的には、 * (AND) は両方のオペランドが真でなければ真になりません。一方、 + (OR) は、片方のオペランドのみが真であれば真になります。この場合、オペランドは単純な式です。例えば、

1 + 3 = 4 AND 2 + 1 = 3

trueを返します

1 + 3 = 2 AND 2 + 1 = 3

偽を返します。同じ式にOR演算を適用すると

1 + 3 = 4 OR 2 + 1 = 3

少なくとも1つの式が真であり、

1 + 3 = 2 AND 2 + 1 = 3

同じ理由で true を返します。

それでは、いくつかの例を見てみましょう。

Excelの組み込みフィルターの使い方

図Aに示すようなシンプルなデータセットを使ってコミッションを追跡しているとしましょう。さらに、特定のベンチマーク(例えば200ドル)を下回っている人がいないかを確認したいとします。幸いなことに、組み込みフィルターの使い方を知っているユーザーであれば、FILTER()関数は必要ありません。しかし、組み込み機能はソースデータに対してのみ機能し、他の式で参照するのが難しいため、簡単とはいえ、あらゆる状況に適したソリューションではない可能性があります。

図A

組み込みフィルターを使用します。
組み込みフィルターを使用します。

人事と手数料の2つの条件があります。組み込み関数を使って、手数料が200ドル以下のジェームズのフィルターされたセットを表示してみましょう。ただし、Tableオブジェクトを使用する必要があることに注意してください。

  1. 「人事」ドロップダウンをクリックし、「(すべて選択)」のチェックを外し、「James」にチェックを入れて「OK」をクリックします。これで4件のレコードが表示されます。
  2. 図 Bに示すように、[コミッション] ドロップダウンから [数値フィルター] を選択し、[以下] を選択します。
  3. 比較演算子の右側のコントロールに 200 と入力し (図 C )、[OK] をクリックします。

図B

組み込みフィルターを選択します。
組み込みフィルターを選択します。

図C

ベンチマーク金額を入力します。
ベンチマーク金額を入力します。

図 Dからわかるように、ジェームズのコミッションのうち、200 ドルのベンチマークを下回るものは 160 ドルのみです。

図D

組み込みのフィルター機能は、複数の列にわたる条件を処理できます。
組み込みのフィルター機能は、複数の列にわたる条件を処理できます。

簡単ですが、機能の仕組みについて多少の知識が必要です。また、この機能はデータソースと連携するため、必ずしも必要ではないかもしれません。

Excelで*を使う方法

基準額を入力したダイアログに「AND」と「OR」のオプションがあることに気づいたかもしれません(図C )。このオプションを使用すると、同じ列(コミッション)に他の条件を入力できます。複数の列にまたがる「AND」演算子を使用するには、*記号を使用します。これはAND()関数に似ていますが、AND()はFILTER()と組み合わせると期待どおりには機能しません。

図Eは次の関数を入力した結果を示しています。

=FILTER(Table1, (Table1[人事]=J2) * (Table1[委員会]<=K2), “結果なし”)

H5に入力します。最初は何も起こりません。これはJ2とK2が空だからです。J2にJames、K2に200と入力します。必要であれば、下記のフィルタリングされた結果セットに適切な書式を適用してください。これは私が気に入らないバグの1つです。動的配列関数は書式を無視します。結果セット(列HからK)に適用した後でも、FILTER()の再計算時に消えてしまうことがよくあります。

図E

異なる参照を選択した場合、構造化参照のため関数の見た目が若干異なりますが、ご心配なく動作します。

最初の引数Table1はソースデータを識別する。2番目の引数

(表1[人事]=J2) * (表1[委員会]<=K2)

これが私たちが求めているものです。簡単に言うと、最初の式はPersonnel列のJ2の値との一致を検索します。この列の条件としてJamesを指定すると、この式はTrueを返します。2番目の式はCommission列のK2の値との一致を検索し、こちらも200以下の値が見つかったため、Trueを返します。最後に、この関数は両方がTrueを返す行のデータを返します。前と同じように、1つだけです。

他の従業員を確認するには、J2で名前を変更するだけです。コミッションのベンチマークを変更するには、K2に新しい値を入力します。関数に<=が含まれているため、ベンチマークは常に「以下」の評価となることに注意してください。図Fは、 Rosaの売上を確認した結果を示しています。

図F

結果セットを更新するには、J2 の名前または K2 の金額を変更します。
結果セットを更新するには、J2 の名前または K2 の金額を変更します。

* 文字を使うと、複数の行にまたがって条件を適用することができます。では、OR の場合はどうでしょうか?

Excelで+を使う方法

場合によっては、特定の値が存在するかどうかを確認したいことがあります。そのような場合は、+記号を使用します。H5の関数を変更するだけで、違いをすぐに確認できます。*記号を+記号に置き換えてください。図Gに示すように、条件に一致するレコードが3つあります。人事値がJames、またはコミッション値が200以下です。

図G

3 件のレコードが条件に一致します。
3 件のレコードが条件に一致します。

その他

これらの簡単な例では、2つの列だけを扱いましたが、列を追加しても問題ありません。列を追加する場合、括弧が非常に重要になります。例えば、人事基準に「Rosa」のような別の人物を追加したいとします。つまり、JamesまたはRosaのコミッション値が200未満のレコードをすべて一致させたいのです。これも、元の関数に少し手を加えるだけです。

  1. H5を選択します。
  2. 2番目の引数の最初の式と2番目の式の間に「(Table1[Personnel]=J3) *」と入力します(図H)。最初の2つの式を括弧で囲みます:((Table1[Personnel]=J2) + (Table1[Personnel]=J3)) * (Table1[Commission]<=K2)。この括弧の追加により、OR演算が最初に実行されます。
  3. J3 に Rosa と入力すると、図 Iの結果が表示されます

図H

H5 の関数を変更します。
H5 の関数を変更します。

図I

この関数は 2 つのレコードを返します。
この関数は 2 つのレコードを返します。

JamesRosaには、手数料が200以下のレコードが2件あります()。さらに多くの従業員を含めるには、行を追加し、新しい式を追加して関数を変更します。OR全体を括弧で囲む必要があることに注意してください。反対側で複数の式を参照する場合も同様です。複数のAND式を括弧で囲み、複数のOR式を括弧で囲みます。

Tagged: