条件の組み合わせを調べるために、AND と OR を組み合わせて使う

適用先
Excel for Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

たとえば、4 月から 1 月の間の販売個数や、江田さんの販売個数など、複数の条件を満たすデータを検索する必要がある場合は、ANDOR 関数を同時に使います。 次に例を示します。

AND と OR を同じ式の中で使う

この式では、AND 関数OR 関数の中でネストされ、2011 年 4 月 1 日から 2012 年 1 月 1 日までの間に販売された個数、または江田さんが販売した個数が検索されます。 Nancy によって販売されたユニットの場合は True が返され、数式で指定された日付の間に Tim と Ed によって販売されたユニットについても True が返されることがわかります。

フォームに含まれる、コピーして貼り付けることができる式は次のとおりです。 サンプルのブックでこれをいろいろと試したい場合は、この記事の最後を参照してください。

=OR(AND(C2>DATE(2011,4,30),C2<DATE(2012,1,1)),B2="Nancy")

この式について、より詳しく見てみましょう。 OR 関数には、true または false かどうかを判断するのにテストするための引数のセット (データの集まり) が必要です。 この数式では、最初の引数は AND 関数で、その中に入れ子になった DATE 関数で、2 番目の引数は "Nancy" です。数式は次のように読むことができます。2011 年 4 月 30 日以降、2012 年 1 月 1 日より前に販売が行われたか、または Nancy によって行われたかどうかをテストします。

AND 関数は、True または False を返します。 OR や IF などの他の関数の機能を拡張するには、ほとんどの場合、AND を使います。 この例では、OR 関数は、AND 関数なしでは正しい日付が検索されません。

AND と OR を IF と共に使う

また、ANDORIF 関数と共に使うことができます。

IF 関数の中でネストされた AND と OR 関数

この例では、市場の規模が小さな南部で働いているのでなければ、少なくとも ¥12,500,000 分の商品を販売するまでボーナスが得られません。 南部で働いているのであれば、¥10,000,000 売り上げたらボーナスを受け取る権利が得られます。

=IF(OR(C4>=125000,AND(B4="South",C4>=100000))=TRUE,C4*0.12,"ボーナスなし")

もう少し詳しく見てみましょう。 IF 関数を正しく実行するには、3 つのデータ (引数) が必要です。 1 つ目は論理テスト、2 つ目はテストが True を返すかどうかを確認する値、3 つ目はテストが False を返すかどうかを確認する値です。 この例では、OR 関数とその中に入れ子になっているすべての関数が論理テストを提供します。 "" と読み取ることができます。列 C の値が "South" でない限り、125,000 以上の値を探し、100,000 を超える値を探し、両方の条件が true になるたびに値に 0.12、手数料額を乗算します。 それ以外の場合は、"ボーナスなし" という単語を表示します。

ページの先頭へ

サンプル データ

この記事の例を使って作業を行う場合は、次のテーブルをスプレッドシートの A1 セルにコピーしてください。 コピーする場合は、見出し行を含むテーブル全体を選ぶようにします。

販売員 地域 売上 数式/結果
山神 東部 87925 =IF(OR(C2>=125000,AND(B2="South",C2>=100000))=TRUE,C2*0.12,"ボーナスなし")
阿藤 北部 100000 =IF(OR(C3>=125000,AND(B3="South",C3>=100000))=TRUE,C3*0.12,"ボーナスなし")
根本 西部 145000 =IF(OR(C4>=125000,AND(B4="South",C4>=100000))=TRUE,C4*0.12,"ボーナスなし")
木山 南部 200750 =IF(OR(C5>=125000,AND(B5="South",C5>=100000))=TRUE,C5*0.12,"ボーナスなし")
川井 南部 178650 =IF(OR(C6>=125000,AND(B6="South",C6>=100000))=TRUE,C6*0.12,"ボーナスなし")
トーマス 北部 99555 =IF(OR(C7>=125000,AND(B7="South",C7>=100000))=TRUE,C7*0.12,"ボーナスなし")
森野 東部 147000 =IF(OR(C8>=125000,AND(B8="South",C8>=100000))=TRUE,C8*0.12,"ボーナスなし")
金子 北部 213450 =IF(OR(C9>=125000,AND(B9="South",C9>=100000))=TRUE,C9*0.12,"ボーナスなし")
青木 南部 122680 =IF(OR(C10>=125000,AND(B10="South",C10>=100000))=TRUE,C10*0.12,"ボーナスなし")
柴田 西部 92500 =IF(OR(C11>=125000,AND(B11="South",C11>=100000))=TRUE,C11*0.12,"ボーナスなし")
石田 東部 88350 =IF(OR(C12>=125000,AND(B12="South",C12>=100000))=TRUE,C12*0.12,"ボーナスなし")
読み上げ 西部 102500 =IF(OR(C13>=125000,AND(B13="South",C13>=100000))=TRUE,C13*0.12,"ボーナスなし")

ページの先頭へ