AND関数を併用するのがオーソドックスですが他の例についても併せて紹介します。
AND関数を併用する方法
次の画像では、B列に入力されている数値が90以上110以下だったら隣のC列に「適正」と表示しています。
やり方としてはC3セルに次の式を入力し、C6セルまでフィルコピー(C3セルの右下の四角をダブルクリックするか下にドラッグ)しています。
C3セル(下方にフィルコピー)
=IF(AND(B3>=90,B3<=110),"適正","")
IF関数の第1引数(条件)にAND関数を使っています。この関数は「B3>=90」と「B3<=110」の両方の条件を満たすときにTRUE(条件を満たす)となるので「適正」が表示され、そうでない場合はFALSE(条件を満たさない)となるので空文字列("")が表示されます(結果的に何も見えない)。
比較に用いる演算子「>=」と「<=」にもご注意ください。それぞれ「>」と「<」に代えれば「90より大きく110より小さい」という条件になります。
「*」演算子を併用する方法
ここでも上記例と同様に、B列に入力されている数値が90以上110以下だったら隣のC列に「適正」と表示しています。
C3セル(下方にフィルコピー)
=IF((B3>=90)*(B3<=110),"適正","")
AND関数を使うのではなく、「B3>=90」と「B3<=110」の2つの式をそれぞれカッコで囲んで「*」でつないでいます。これにより「それぞれの条件を満たす場合を1とし、満たさない場合を0とする掛け算」が行われます。両方の条件を満たす場合にこの掛け算は1(1*1=1)となり、そうでない場合は0(1*0=0 , 0*1=0 , 0*0=0 のいずれか)となります。
IF関数は0以外の数値をTRUE(条件を満たす)とみなすので、結果的に両方の条件を満たすときに「適正」と表示されます。
「*」演算子を使う方法はAND関数を使う方法よりわかりにくいのであまり使われませんが、1つメリットがあります。
次の画像では2か所の参照範囲をそれぞれ「B3:B6」とすることにより、C3セルの1つの数式だけで4つの判定結果を表示させています(スピル機能のあるバージョンでのみ可)。
C3セル(下方にフィルコピー)
=IF((B3:B6>=90)*(B3:B6<=110),"適正","")
この条件式により「(B3>=90)*(B3<=110)」から「(B6>=90)*(B6<=110)」までの4つの式の結果がいっぺんに得られるので4つの判定結果が表示されます。
上記のAND関数の場合は同じように参照範囲を広げてもうまくいきません。AND関数の場合は参照範囲を広げても1つの値しか返さない、というのが原因です。
なお以降で紹介する方法(IFS関数/IF関数のネスト)ではうまくいきます。
IFS関数で実現する方法
上記の例では「~以上~以下」に該当するかどうかの二択で判定結果を表示するためIF関数を使いましたが、結果が3通り以上になるようなケース(○段階で評価するなど)ではIFS関数を使うことも考えられます。
次の画像ではB列に記録された点数に対し「80以上ならA、60以上79以下ならB、59以下ならC」と判定してその結果を表示しています。
C3セル(下方にフィルコピー)
=IFS(B3>=80,"A",B3>=60,"B",B3<60,"C")
IFS関数では引数として「条件1 , 値1 , 条件2 , 値2 , 条件3, 値3…」と記していくことで、最初に満たされた条件に対応する値を表示させることができます。
この式では「B3>=80」の条件は満たされないので「A」とは表示されません。しかし次の「B3>=60」が満たされるので「B」と表示されます。「60以上79以下」という条件を明示的に記してはいませんが、最初の条件から順番に判定されるというIFS関数の性質を利用することで同様の判定ができるというわけです。
(※判定対象が整数のみなので「60以上79以下」のように表現していますが、上記の式による判定内容は正確には「80以上ならA、60以上80未満ならB、60未満ならC」ですのでその点はご留意ください)
なお、この判定はIF関数のネスト(入れ子)で表現することもできます。
C3セル(下方にフィルコピー)
=IF(B3>=80,"A",IF(B3>=60,"B","C"))
数値が79以下(80未満)の場合は内側のIF関数が実行され、60以上ならBが、59以下(60未満)ならCが表示されるという仕組みです。
式の長さは上記より少し短くなっていますが、評価の段階が4段階,5段階…と増えるとネスト(入れ子)の段階も増えてどんどんわかりにくい式になっていくのが難点です。