よく使うEXCELの関数集5(論理関数)

論理関数

いよいよプログラム言語の考え方、論理関数に入っていきます。
論理関数は、EXCELの関数を学んだあとにエクセルマクロやVBAのご紹介をいたします。

その際にも頻繁に使う関数(コマンド)でEXCELの関数から学んでおくとプログラミング言語に移行した後でも理解しやすくなりますので、是非何度も試してみてイメージをつかんでおいてください。

条件を判定する(IF、SWITCH)

IF      : 条件を判定して処理を変える
 使用方法  : =IF(判定する条件, 条件に一致した場合の処理, 条件に不一致だった場合の処理) 
 使用例   : =IF(B2=B3-1,”連番”,”誤り”)

【説明】例1
 B2セルには1が入っています、B3セルには2が入っています。(ここは連番になっていますので「連番」を表示したいです)
 その場合はB3セルの値を用いてB2セルの値を検査します。
 B2セルとB3セルが連番であり比較したときに同じ値になるためにはB3セルから1を引けば2-1で1になり同じ値になります。
 同じ値の時は「連番」と表示し、そうでない場合は「誤り」と表示するのでこの場合「連番」表示されます。

【応用編】例2
 契約者と送付先の名前を判断して本人か家族か別人かを判定しています。
 前の記事でご説明した文字列操作を早速使っていますね。
 このように複合して関数を使えるようになると利用の幅が無限に広がります。

【説明】
 複数のIF関数が使われています。
 ※このように内部に同じように繰り返すことをネストといいます。
 このIF文は、まず、B12とB13を比較して完全一致だったら「本人」と表示し、そうでなかった場合にもう一度IF文を実行します。
 2番目のIF文はFIND関数を使ってB12のセルにある空白の文字位置を出し(この場合3(文字目)が返ってきます)
 そこから1を引くと苗字の部分の2文字という数字が出てきます。
 次にLEFT関数を使って左からこの苗字の数分(2文字)抜き出した値(山田)と、C12も同様に苗字の数だけ抜き出した値(山田)を比較して一致していたら「家族」を表示し、違っていたら「別人」を表示します。

少し複雑に感じるかもしれませんが、使っているうちに慣れてきますのでご安心ください。
また、実は関数よりもプログラムの条件分岐の方がわかりやすいですので、関数で理解できればプログラムの方が優しく感じます。

★Tips★IF文を使わない単純比較もできる

例えば上記の
=IF(B2=B3-1,”連番”,”誤り”)

この関数ですが、もっと簡単に書くことができます。
 =B2=B3-1
これだけでこの式が答えが正しいのか間違っているのかを返してくれます。
正しい(真) : TRUE
誤り(偽)  : FALSE
このようにTRUEかFALSEで帰ってきます。
ちょこっと検査(自分用の検算など)したいときはこれで十分でしょう。

もう少し、、、このTRUEとFALSEはIF文の説明で一般的に書かれているので覚えておくと良いでしょう。
条件に一致した場合の処理    = TRUE(真)
条件に不一致だった場合の処理  = FALSE(偽)
真の場合の処理、偽の場合の処理などと言ったりしますので、参考文献などを読む際に覚えておくと迷わなくて済みます。

SWITCH  : 条件を判定して処理を変える
 使用方法  : =SWITCH(条件を判定するセル, 条件, 条件に一致した場合の処理, 条件を判定するセル, 条件, 条件に一致した場合の処理, …, その他の場合) 
 使用例   : =IF(B2, ”A”, “野菜”, B2, “B”, “肉”, “入力誤り”)

【説明】
 B2セルにがAだった場合、「野菜」と表示し、Bだった場合には「肉」と表示します、AでもBでもない場合は「入力誤り」と表示します。
 このようにIF文をネストしなくても複数の条件を記載し判定できます。
 こちらもプログラム(例えばVBAなど)ではSELECT ~ CASEといった条件分岐が記載出来ますので、覚えておくと後に理解しやすくなります。
 ちなみに、この関数はOffice365のみの関数のようです。

Office365をご利用でIF文が複数ネストしてしまうような条件をかく場合にはこちらの方が見やすくなります。

複数条件での比較(AND、OR)

AND      : 複数条件のうちのすべての条件が一致しているかを判定する
 使用方法  : (判定条件1, 判定条件2, 判定条件3, …)
 使用例   : =AND(C3>=30,D3>=50,E3>=30) 
        ※C3は30以上、D3は50以上、E3は30以上すべての条件があてはまる場合TRUE(真)を返す

OR      : 複数条件のうち一つでも一致しているかを判定する
 使用方法   : (判定条件1, 判定条件2, 判定条件3, …)
 使用例    : =OR(C11>=50,D11>=50,E11>=50)
         ※C11が50以上、D11が50以上、E11が50以上のいずれかが条件に当てはまる場合TRUE(真)を返す。

条件のが満たされていないことを判定する(NOT)

NOT      : 条件が満たされていない場合TRUE(真)を返す
 使用方法  : (判定条件)
 使用例   : =NOT(C2=”シャンプー”)
         ※この場合C2の値はシャンプーではなく電池なのでTRUE(真)が返ってくる

普段あまり使いませんが、ANDやORを複数つなげて判定させる場合に、逆の判定が必要になる場合はまれにあります。
そのような時には有効です。
プログラムにおいてもNOTという考え方は存在していますので、頭の片隅にでも置いておくと良いでしょう。 

等号不等号、以下、未満、以上、より大きい、一致しない

論理関数では、等号不等号などの算術記号を使いますので、念のためおさらいしておきましょう。

A = B  : AとBは等しい
A > B  : BよりAの方が大きい
A >= B  : AはB以上
A < B : AよりBの方が大きい
A <= B  : BはA以上
A <> B  : AとBは異なっている

算術記号ではこのように表します。
特に最後のA <> Bという式はプログラム特有の書き方かもしれません。

いかがでしたでしょうか?
少し複雑でしたか?

論理関数は計算や機能、表現の仕方が大きく広がりますので、自分で実際に試してみてしっかり覚えておきましょう。

次回は検索や行列関数(VLOOKUPやHLOOKUP)などの関数をご紹介します。
EXCELで多くのデータを扱うようになると非常に便利な関数です。

では、次回をお楽しみに。