エクセルを扱ううえでif関数のマスターは欠かせません。
さらにAND関数やOR関数、NOT関数を組み合わせてif関数を使うことで、ワークシート上でより複雑なことができるようになるんです。
本記事では「AND関数やOR関数、NOT関数を使ってif関数に複数条件を設定する方法」について事例を挙げながら解説します。
別記事「エクセルでif関数を使う方法!重要な論理式4パターンを解説!」でも触れていますので、そちらも併せてご覧ください。
1.AND関数とOR関数、NOT関数の構文
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
まずはAND関数、OR関数、NOT関数の構文を見ていきます。
AND関数の構文
=AND(論理式1, 論理式2, 論理式3・・・)
AND関数は複数の論理式を入力し、それらがすべて真(TRUE)の場合に真(TRUE)を返します。
OR関数の構文
=OR(論理式1, 論理式2, 論理式3・・・)
OR関数は複数の論理式を入力し、それらのうちひとつでも真(TRUE)がある場合に真(TRUE)を返します。
NOT関数の構文
=NOT(論理式)
NOT関数は対象の論理式が偽(FALSE)の場合に真(TRUE)を返します。
2.if関数との組合せ方
if関数の構文は以下の通りです。
=if(論理式,論理式が真の場合の値,論理式が偽の場合の値)
論理式の部分には通常ひとつの式が入りますが、ここにAND関数やOR関数、NOT関数を使うと複数の論理式を設定することができます。
3.事例と解説
3.1 数値の大小を判断する
数値の大小を判断する事例を見てみましょう。
この事例では、A列に角度が30°刻みで0~360°の範囲で入力されています。
B列にはA列の角度に対する正弦波の絶対値を取ったものが入力されています。
数式としては、B1セルに以下のような数式で入力しています。
=ABS(SIN(RADIANS(A1)))
この事例ではグラフにおけるマッピングを考えてみましょう。
Aの範囲は、最初の山の上半分に当たります。
この範囲かどうかを判定するにはどのような条件で設定するとよいでしょうか?
言葉で考えてみると、『最初の山である』AND(かつ)『上半分である』という条件にしたいですよね。
これを数式に表してみると、最初の山は角度(A列の値)が180°より前の範囲ですから、A1<=180というような式になります。
上半分は波の値(B列の値)が0.5以上の範囲ですからB1>=0.5というような式になります。
これらの式をAND関数で組み合わせて、if関数に入力すると、C列のような数式となります。
=IF(AND(A1<=180,B1>=0.5),"Aの範囲","") ※C1セルの数式
次に、Bの範囲は、2つの山の裾野の部分と、頂点付近の部分に当たります。
この範囲かどうかを判定するにはどのような条件で設定するとよいでしょうか?
言葉で考えてみると、『山の裾野である』OR(もしくは)『山の頂点付近である』という条件にしたいですよね。
これを数式に表してみると、山の裾野は波の値が0.1以下の範囲ですから、B1<=0.1というような式になります。
一方で、山の頂点付近は波の値(B列の値)が0.9以上の範囲ですから、B1>=0.9というような式になります。
これらの式をOR関数で組み合わせて、if関数に入力すると、D列のような数式となります。
=IF(OR(B1<=0.1,B1>=0.9),"Bの範囲","") ※D1セルの数式
最後のCの範囲は、Aの範囲でもBの範囲でもない範囲に当たります。
ここまでAの範囲とBの範囲の数式化はできていますので、これらを組み合わせつつ、NOTで否定をしてみましょう。
論理式部分は以下のように組めますね。
NOT(OR(AND(A1<=180,B1>=0.5),OR(B1<=0.1,B1>=0.9))) ※E1セルで使う論理式
これをif関数と組み合わせて、E列のような式になります。
=IF(NOT(OR(AND(A1<=180,B1>=0.5),OR(B1<=0.1,B1>=0.9))),"Cの範囲","")
※E1セルの数式
3.2 文字列を判断する
文字列をもとに判断する事例を見てみましょう。
この事例では、A列に東日本か西日本か、B列に地方名、C列に都道府県名が入力されています。
このように入力された文字列をもとに、いくつかの条件で判断してみましょう。
近畿地方における『県』を抽出するにはどのような条件を組めばよいでしょうか?
言葉で考えてみると、『近畿地方である』AND(かつ)『県である』という条件になりますよね。
これを式として表してみると、地方が”近畿”という文字列であればよいということですから、B2=”近畿”というような式になります。
一方で、都道府県名に”県”という文字列を含めばよいということですから、COUNTIF関数を用いてCOUNTIF(C2,”*県”)というような式になります。
ここでCOUNTIF関数とは、指定した範囲(上記ではC2セル)に、文字列や数値(上記では”*県”という文字列)を含むセルがいくつあるかをカウントする関数です。
“*県”の*(アスタリスク)はワイルドカードといって、どの文字列でもよいということを示します。
つまり、○○県という文字列をカウントするというわけですね。
都道府県というのは文字列の最右であることは確実ですから、RIGHT関数を用いて、最右の1文字が”県”であるというように、”RIGHT(C2,1)=”県”としても構いません。
これらをif関数と組み合わせると、D列の式は以下となります。
=IF(AND(B2="近畿",COUNTIF(C2,"*県")),"近畿の『県』","") ※D2セルの数式
次に、東日本と中部地方を抽出するにはどのような条件を組めばよいでしょうか?
言葉で考えてみると、『東日本である』OR(もしくは)『中部地方である』という条件になりますよね。
これを式として表してみると、A列が”東日本”という文字列であればよいということですから、A2=”東日本”というような式になります。
一方で、地方は”中部”という文字列であればよいということですから、B2=”中部”というような式になります。
これらをif関数と組み合わせると、E列の式は以下となります。
=IF(OR(A2="東日本",B2="中部"),"東日本と中部","") ※E2セルの数式
最後に関東以外の地域を抽出してみましょう。
このときの条件は地方が”関東”という文字列でなければよいということですから、B2=”関東”という条件をNOT関数で否定すればよいですね。
したがって、F列の式は以下となります。
=IF(NOT(B2="関東"),"関東以外","") ※F2セルの数式
3.3 数値と文字列とで判断する
数値と文字列の双方を使って判断することも可能です。
この事例では、A列に地方、B列に都道府県名、C列に県庁所在地の北緯、D列に県庁所在地の東経が入力されています。
日本の標準時刻の基準となる子午線(東経135°)は明石市を通っていますよね。
この子午線より県庁所在地が東にある『県』はどのように抽出するでしょうか?
言葉で考えてみると、『県である』AND(かつ)『子午線より東である』という条件になりますよね。
これを式として表してみると、B列の都道府県名のうち、最右の1文字が”県”という文字であればよいということですから、RIGHT関数を使って、RIGHT(B2,1)=”県”というような式になります。
もちろんCOUNTIF関数を使っても構いません。
一方で、東経は135という数値より大きい値であればよいということですから、D2>=135というような式になりますね。
したがって、if関数と組み合わせると、E列の式は以下のように組めます。
=IF(AND(RIGHT(B2,1)="県",D2>=135),"子午線以東の『県』","") ※E2セルの数式
4.まとめ
本記事では「AND関数やOR関数、NOT関数を使ってif関数に複数条件を設定する方法」について事例を挙げながら解説しましたが、いかがでしたか?
if関数とAND関数やOR関数、NOT関数の組合せを使いこなして、ワークシートでできることのレベルアップを目指しましょう。
別記事「エクセルでif関数を使う方法!重要な論理式4パターンを解説!」でも触れていますので、そちらもぜひ併せてご覧ください。