エクセルのif関数で範囲(〇以上□以下)を指定する方法
エクセルのif関数を使って、
「XX以上、XX以下」
「XX超、XX未満」
というような条件を書きたいときにどうすればいいでしょうか?
普段書くような条件指定の方法ではダメ
例えば、
A1セルに入力されている値が、
「-1以上、2以下」というような条件を指定したい場合、
普通に考えると、
=if( -1<=A1<=2 , 1 , 0)
というような条件を書きたくなるかもしれません。
でも、
これでは、正しい結果が表示されません。
(理由は後で書きます)
エクセルで、上のようなことをやりたい場合には、
=if( and(-1<=A1,A1<=2) , 1 , 0)
というように、and関数を使って書きます。
同様に、
「-1超、2未満」であれば、
=if( and(-1<A1,A1<2) , 1 , 0)
と書けば、うまく動きます。
エクセルの条件式は「2つの数字の比較」で表す
エクセルでは、
「-1<=A1<=2」というような
「3つの数字を比較する」書き方はできません。
必ず、
2つの数字を比較する形にしないといけません。
例えば、
「-1<=A1<=2」の場合は、
この形だと3つの数字の比較ですが、
これを、
「-1<=A1<=2」
↓
「-1<=A1」 かつ 「A1<=2」
というように、
2つの数字の比較の「組み合わせ」に分解することができます。
この分解後の条件を、
エクセルの計算式で表現すると、
「and(-1<=A1,A1<=2)」
という形になるのです。
-1<=A1<=2という条件を指定すると何が起きている?
※ここからは、
やや難しいのに加え、応用できる話でもありませんので、
難しい、、と感じたら、読み飛ばしてください。
冒頭で書いた、
誤った計算式:
=if( -1<=A1<=2 , 1 , 0)
を実際に入れてみると、
A1セルに何を入れても、「0」が表示されます。
なぜ、
こんなことが起こるのかを考えて見ます。
- 1.計算式は、最初の2つの数字で計算をする
-
計算式が出てきた場合、
通常は、「最初の2つの数字」を持ってきて計算(解釈)を行います。
例えば、「=1+2+4」という計算式を入れたら、
最初に「1+2」の部分を計算するわけです(計算結果は3)。そして、その計算結果の「3」に「+4」をするので、
「3+4」=「7」
として、正しい計算結果7が表示されるわけです。
- 2.条件式でも、最初の2つの数字で条件を判定する
-
実は、
これと同じことが条件式の判断でも、
行われています。「-1<=A1<=2」という条件式を入れた場合、
「最初の2つの数字」を持ってきて、
「-1<=A1」を計算(解釈)します。条件式の場合、計算結果は
条件が成り立てば「TRUE」、成り立たなければ「FALSE」
という値(論理値といいます)が返されます。今回の条件式では、
A1≧-1であれば条件が成り立っているので「TRUE」
A1<-1であれば条件が成り立っていないので「FALSE」が返されることになります。これで、最初の2つの数字の計算(解釈)ができましたので、
次の部分に移ります。 - 3.TRUE、FALSEは、あらゆる数字よりも大きい?
-
残っているのは、
「(【-1<=A1】の計算結果)<=2」
の部分です。先ほど見たように、
(【-1<=A1】の計算結果)は、
A1セルに入っている値に応じて変化しますが、- A1≧-1であれば「TRUE<=2」
- A1<-1であれば「FALSE<=2」
という計算をすることになります。
実は、
この比較は、どちらも「正しくない」という判定になってしまいます。どうやら、
エクセルの仕様で、
TRUEやFALSEを、数字と比較しようとすると、
TRUE、FALSEは、全ての数字よりも大きい
という扱いを受けるようです。ということで、
A1セルにどんな値が入っていたとしても、
条件式は成り立たない
と判断されてしまい、
常に「0」が表示されてしまうのでした。
以上、長々と書いてきましたが、
結論としては、
条件式で
「3つの数字(セル)の比較は止めましょう」
ということになります。