gijyutsu-keisan.com

論理・情報関数

論理値・論理式

エクセルに限らず、プログラミングにおいても、条件によって処理を分岐したい時が多々あります。
例えば、”60点以上なら合格だけど、59点以下は不合格”等々。
その条件(>=60とか、<=59)を書いた式を論理式と呼び、その条件に当てはまっている(真:TRUE)か、違っている(偽:FALSE)かを論理値と呼びます。
論理値・論理式はExcel関数でも非常に有効活用できるものなので覚えておいて損はありません。

それでは例として、セルB2に”50”と記入して、セルC2に”=B2>=30”と入力してください。
セルC2に入力した始めの”=”はエクセルに計算させるうえでの決まりごとなので、続きの”B2>=30”が論理式で、その戻り値”TRUE”が論理値です。
和訳(?)すると、「セルB2の値は30以上である」という論理式に対して、「条件に当てはまっている(TRUE)」という論理値が返ってきます。

他の例を挙げると、セルB2に”50”、セルB3に”35”を入力して、セルC2に”=B2=B3”と入力してください。
これも先ほどと同様、「セルB2の値はセルB3と等しい」という論理式に対して「条件に当てはまっていない(FALSE)」という論理値が返ってきます。
セルB3の値を”50”に変更すると”TRUE”が戻ります。

条件によって処理を分岐する

IF関数を使用することで、Aの場合はBという処理、A’の場合はCの処理と、条件分岐することができます。
IF関数の引数に更にIF関数を使用することで、条件分岐の枝を広げることも可能です。
例えばセルA1に点数が入力されていて、任意のセルに合否結果を返すとしたとき、「60点以上で合格だけど59点以下は不合格」の場合
  • 論理式は”A1>=60”
  • TRUEの場合の処理はセルに”合格”と表示
  • FALSEの場合の処理は”不合格”と表示
これを数式で表すと、
=IF(A1>=60,"合格","不合格")
となります。
同じ内容について、別の考え方をすると、
  • 論理式は”A1<60”
  • TRUEの場合の処理はセルに”不合格”と表示
  • FALSEの場合の処理は”合格”と表示
=IF(A1<60,"不合格","合格")
という2通りの解答ができます。

次に、「80点以上で評価”A”、60点以上で評価”B”、59点以下で評価”C”」の場合
  • 論理式は”A1>=80”
  • TRUEの場合の処理はセルに”A”と表示
  • FALSEの場合の処理は更にIF関数で60点以上かどうかによって処理を分岐
=IF(A1>=80,"A",IF(A1>=60,"B","C"))
とできますが、これ以外にも答えはたくさんあります。
分岐をすればするほど数式が煩雑になってきます。
改行(Alt+Enter)するなど、数式をわかりやすくしないと自分で何やってるのか分からなくなるかもしれません。

複数条件を使用する

  • =AND(条件1,条件2・・・)
  • =OR(条件1,条件2・・・)
AND関数は引数の論理式(値)が全てTRUEの時に戻り値TRUEを返します。
「○○かつ△△かつ××」という条件の時に使用します。
OR関数は引数の論理式(値)のうちどれか1つでもTRUEの時に戻り値TRUEを返します。
「○○もしくは△△もしくは××」という条件の時に使用します。

例えば、「60点以上かつ生活態度”○”だったら”合格”、60点未満もしくは生活態度”×”だったら”不合格”」の場合 IF関数だけだと煩雑な感じがします。
AND関数の場合は条件式に”60点以上かつ生活態度○だったら”を使用し、
OR関数の場合は”60点未満もしくは生活態度○でなかったら”を使用しています。
IF関数だけ使用するより、AND・OR関数を使用したほうがスッキリしていますね。

※補足

論理値(TRUE、FALSE)は演算することが可能です。
  • TRUE = 1
  • FALSE = 0
として扱われるので、AND・OR関数を使用しなくても「○○かつ△△」などの条件分岐が可能です。
AND関数は引数が全てTRUEだったら戻り値TRUEなので、
(条件1)×(条件2)×・・・= 1
OR関数は引数のうちどれか1つでもTRUEなら戻り値TRUEなので
(条件1)+(条件2)+・・・>= 1
となります。
このことを利用し、先ほどの「60点以上かつ生活態度”○”だったら”合格”、60点以下もしくは生活態度”×”だったら”不合格”」の場合
と少し簡単になります。
普段はAND・OR関数を使用したほうがわかりやすいかもしれませんが、配列数式ではAND・OR関数を使用できないので覚えておいて損は無いです。

文字列を比較する

=EXACT(文字列1,文字列2)
EXACT関数は2つの文字列が同じかどうかを比較する関数です。
”=(イコール)”でも同じかどうかを比較できますが、大文字・小文字は同一で扱われるため”EXCEL”と”Excel”は同じと判断されます。
EXACT関数では大文字・小文字は別の文字として扱われます
IF関数などで厳密に文字列比較したい場合はEXACT関数を使用し、 大文字・小文字は問わない比較をしたければ”=”を使用しましょう

対象がエラー値かどうかを調べる

=ISERROR(テスト対象)
ISERROR関数はテスト対象(セルや数式の結果)がエラーになっている場合はTRUE、エラーでなければFALSEが戻ります。

例えば以下のように変化率を求めたい場合、文字が入っていたり0で割り算するセルはエラーになります。
エラーが発生したら変化率を0にしたい場合はISERROR関数を以下のように使用します。
似たような関数でセルの値が数値かどうかを調べるISNUMBER関数というのもあります。

対象が空白かどうかを調べる

=ISBLANK(テスト対象)
ISBLANK関数はテスト対象(セルや数式の結果)が空白であればTRUE、空白でなければFALSEが戻ります。
ISBLANK関数を使用しなくても、(テスト対象)=”” の戻り値と同じです。

エラー値 #N/A を返す

=NA() ※引数なし
NA関数は主にグラフ作成で使用します。
データ集計でいらないデータを省くために他のセルにグラフ作成用の数値をわざわざコピーしたりする手間が省けます。
例えば、以下のように「測定ミス」だとグラフは0値を取ってしまいます。
仮に「測定ミス」を省こうとしてセルを削除すると、グラフが不連続になってしまいます。
そこで1列作業セルを用意し、文字列なら#N/Aを返すようにします。
次にグラフの値の範囲を作業セルに変更すれば以下のように「測定ミス」が無視されたグラフが完成します。


参考文献

関連ページ