関数IFで条件分岐を行う際に「2つ以上の条件」を指定したい場合もあるだろう。こういった場合に活用できるのが「AND」や「OR」といった関数だ。それぞれの条件を「かつ」で結ぶときはAND、「または」で結ぶときはORを使用する。なお、これらの関数は結果としてブール値(TRUEまたはFALSE)を返す、ということを覚えておく必要がある。
複数の条件を指定した関数IF
関数IFを使用する際に「複数の条件」を指定したい場合もあるだろう。これを実現する方法は大きく分けて2種類ある。1つ目は関数IFを入れ子にして記述する方法、2つ目は「AND」や「OR」といった関数を利用する方法だ。ということで、今回は「AND」や「OR」の使い方を中心に「複数の条件」を指定する方法を解説していこう。
たとえば、「小計が3万円以上の場合」または「プレミアム会員に加入している場合」は送料無料(0円)、そうでない場合は送料を680円にする、という処理を関数IFで実現してみよう。
このような分岐処理は、関数IFを入れ子(二重構造)にして記述すると実現できる。今回の例のように「または」で条件を結ぶときは、「偽の処理」の部分に「2番目の関数IF」を挿入してあげればよい。具体的には、以下の図のような記述になる。
処理手順を追いながら詳しく見ていこう。小計が「3万円以上」のときは、1番目の関数IFで「真の場合」として処理される。よって、送料は0円に設定される。この場合、2番目の関数IFは実行されないので、プレミアム会員は「加入」でも「未加入」でも処理に影響を及ぼすことはない。
小計が「3万円以上」でなかった場合は、1番目の関数IFで「偽の場合」として処理される。ここには2番目の関数IFが記述されており、プレミアム会員に「加入」していた場合、送料は0円に設定される。
小計が「3万円以上」ではなく、プレミアム会員にも「加入」していなかった場合は、2番目の関数IFで「偽の場合」として処理される。その結果、送料は680円に設定される。
このように関数IFを入れ子にすることで「複数の条件」を指定することが可能である。ANDやORといった関数の使い方を知らない方は、この方法で複数条件を指定しているケースが多いであろう。
もちろん、この方法で複数条件を処理しても構わないが、ANDやORの使い方も学んでおくと、より柔軟に関数IFを記述できるようになる。この機会に覚えておこう。
関数ORを使った条件の指定
まずは、それぞれの条件を「または」で結ぶ関数ORの使い方から紹介していこう。関数ORのカッコ内には、条件をひとつずつカンマで区切って指定する。
◆関数ORの書式 =OR(条件1, 条件2, [条件3], …)
先ほどと同様に、「小計が3万円以上の場合」または「プレミアム会員に加入している場合」という条件について、関数ORを単体で使用した例を紹介していこう。この場合、以下の図のように関数ORを記述すればよい。
各パターンについて順番に見ていこう。たとえば、以下の図のような状況であったときは「小計が3万円以上の場合」の条件を満たしているため、関数ORの結果は「TRUE」と表示される。
続いては、小計が「3万円以上」ではなく、プレミアム会員に「加入」していた場合の例だ。この場合、「プレミアム会員に加入している場合」の条件を満たしているため、関数ORの結果は「TRUE」になる。
もちろん、「3万円以上」と「加入」の条件を両方とも満たしていた場合も、関数ORの結果は「TRUE」になる。
唯一、結果が「FALSE」になるのは、2つの条件をどちらも満たしていない場合だ。たとえば、以下の図のように状況を変化させると関数ORの結果は「FALSE」になる。
このように関数ORは「TRUE」または「FALSE」を返す関数となる。一般的な関数のように「数値データ」や「文字列データ」を返す関数ではない。このように考えると、関数ORは少し特殊な関数といえる。そのぶん、使える場所も限定的にならざるを得ない。
関数ORが使える場所として代表的なのは、関数IFの第1引数だ。前回の連載でも紹介したように、関数IFの第1引数には「条件」を記すのが基本となる。また、その応用として、最終的に「TRUEまたはFALSEとみなせるもの」を指定することも可能となっている。
関数ORの結果は「TRUE」または「FALSE」になるので、第1引数に指定しても関数IFは問題なく動作してくれる。よって、先ほどの関数ORをそのまま「関数IFの第1引数」に指定しても構わない訳だ。
このように「関数IF」と「関数OR」を組み合わせて記述することで、
・小計が3万円以上の場合(E14>=30000)
【または】
・プレミアム会員に加入している場合(C4="加入")
といった条件を実現できる。
以下に示した図の場合、プレミアム会員には「加入」していないが、小計が「3万円以上」になるので、関数ORの結果は「TRUE」になる。よって、関数IFは「真の場合」として処理される。その結果、送料は0円に設定される。
これが関数ORの代表的な使い方になる。
関数ANDを使った条件の指定
続いては、複数の条件を「かつ」で結ぶ場合について解説していこう。ここからは送料無料の条件を変更して、「小計が3万円以上の場合」かつ「プレミアム会員に加入している場合」という条件について考えていく。
これを関数IFだけで実現するときは、以下の図のように関数IFを記述すればよい。それぞれの条件を「かつ」で結ぶときは、「真の処理」の部分に「2番目の関数IF」を挿入してあげればよい。
もうひとつの方法は、関数ANDを使用する方法だ。
◆関数ANDの書式
=AND(条件1, 条件2, [条件3], …)
まずは、関数ANDを単体で使用した例から紹介していこう。関数ANDのカッコ内に条件をひとつずつカンマで区切って指定する。
関数ANDは、カッコ内に記した条件をすべて満たす場合のみ「TRUE」を返す。たとえば、小計が「3万円以上」であり、さらにプレミアム会員にも「加入」している、といった場合に関数ANDの結果は「TRUE」になる。
プレミアム会員に「加入」していても、小計が「3万円以上」でなければ、関数ANDの結果は「FALSE」になる。
この関数ANDを「関数IFの第1引数」に指定すると、
・小計が3万円以上の場合(E14>=30000)
【かつ】
・プレミアム会員に加入している場合(C4="加入")
といった条件を実現できる。
以下に示した図の場合、小計は「3万円以上」になっているが、プレミアム会員に「加入」していないため、関数ANDの結果は「FALSE」になる。よって、関数IFは「偽の場合」として処理され、送料は680円に設定される。
このように、それぞれの条件を「かつ」で結ぶときは関数ANDが活用できる。
3つ以上の条件を指定する場合
これまでに紹介してきた例のように「条件が2つ」の場合は、ANDやORといった関数の使い方を知らなくても「関数IFの入れ子」で十分に対応できるだろう。しかし、条件が3つ、4つ、…になると少し厳しくなる。「関数IFの入れ子」で対応できない訳ではないが、階層が何重にもなるためミスを犯しやすくなる。
たとえば、以下の条件を満たすと送料無料になるネットショップがあったとしよう。
・小計が3万円以上の場合(E14>=30000)
【または】
・プレミアム会員に加入している場合(C4="加入")
さらに、10月中だけ送料無料キャンペーンを行うため、以下の条件も追加することになった。
・購入日が「10月」である(MONTH(E2)=10)
「購入日が10月であるか?」の条件は、日付(E2セル)から関数MONTHで「月」の数字だけを取得すると指定できる。
このように条件が増えた場合であっても、関数ORを使っていれば特に問題なく対処できる。関数ORは3つ以上の条件も指定できるため、「MONTH(E2)=10」の条件を追加するだけで対応することが可能だ。
以下に示した図の場合、プレミアム会員に「加入」しておらず、小計も「3万円以上」ではないが、購入日が「10月」の条件を満たしているので、関数ORの結果は「TRUE」になる。よって、関数IFは「真の場合」として処理され、送料は0円に設定される。
これと同様の処理を「関数IFの入れ子」で実現しようとすると、
=IF(E14>=30000,0,IF(C4="加入",0,IF(MONTH(E2)=10,0,680)))
という記述になり、相当に“ややこしく"なる。「難しい」というより「頭が混乱する」という状況になるだろう。よって、関数ORの使い方を知っている方が応用が効く、といえる。
もちろん、それぞれの条件を「かつ」で結ぶ関数ANDも3つ以上の条件を指定することが可能だ。ANDとORのどちらを使用するかは、以下を基準に判断すればよい。
関数OR … 「いずれかの条件」を満たせばTRUE
関数AND … 「すべての条件」を満たしたときのみTRUE
このように3つ以上の条件にも柔軟に対応できるのがANDやORの特長となる。複雑な条件にも対応できるように、この機会にぜひ、関数ANDと関数ORの使い方をマスターしておくとよいだろう。