If
分類:論理

論理関数

 論理関数には、1つまたは複数の条件を、真(TRUE)か偽(FALSE)か判断する関数や、条件を基に処理を分岐する関数があります。
 論理関数は「IF」「AND」「OR」「NOT」「TRUE」「FALSE」の6種類あり、その中で最も使用頻度の高い関数が「IF」関数になります。

 IF関数は他の論理関数と組み合わせると、バリエーション豊かな条件分岐が可能になります。ここではIF関数だけでなく、他の論理関数にも焦点をあてていきます。

◆真(TRUE)/偽(FALSE)とは?
 これらは、条件が「成立(TRUE)」「不成立(FALSE)」とのように考えると分かり易いと思います。

例:セル[A1]の値は「0」より大きいか?
 「0」より大きい場合はTRUE(成立)、そうでない場合はFALSE(不成立)になります。
これを数式で表してみると・・・

=IF(A1>0,"成立(TRUE)","不成立(FALSE)")


IFの機能と構成

機能:論理式の結果に応じて、指定された値を返す。

構成:=IF(論理式,真の場合,偽の場合)

◆引数
 「論理式」には結果がTRUE/FALSEになる値、又は数式を指定します。
 「真の場合」には論理式の結果がTRUEであった場合に返される値を指定します。又「偽の場合」には論理式がFALSEであった場合に返される値を指定します。

 尚、=IF(A1="","○")のように「偽の場合」を省略出来ます。その場合、論理式の結果が偽(FALSE)の時は文字列「FALSE」が返ります。但し、=IF(A1="","○",)のようにコンマ「,」をつけ「偽」を省略、同じく=IF(A1="",,"×")のように「真」を省略した場合には、数値の「0」が返ります。

◆論理式を数式で指定する例

セル[A1]の値が「東京」の時は「都」、そうでない場合は「県」と表示:
 =IF(A1="東京","都","県")

セル[A1]の値が「東京」の時はセル[B1]の値、そうでない時はセル[C1]の値を表示:
 =IF(A1="東京",B1,C1)

セル[A1]+セル[A10]=100の時は「○」、そうでない場合は「×」と表示:
 =IF(A1+A10=100,"○","×")

セル[A1]~セル[A10]の合計が100の時は「○」、そうでない場合は「×」と表示:
 =IF(SUM(A1:A10)=100,"○","×")

セル[A1]~セル[A10]の合計が100未満の時はセル[B1]の値、そうでない時はセル[C1]の値を表示:
 =IF(SUM(A1:A10)<100,B1,C1)

[DataArea]と名前を定義したセル範囲の合計が100未満なら「○」、そうでない場合は「×」と表示:
 =IF(SUM(DataArea)<100,"○","×")


ANDの機能と構成

機能:全ての引数がTRUEの時に論理値TRUEを返す。

構成:=AND(論理式1,論理式2,...)

論理式には、結果がTRUE/FALSEになる式を30個まで指定出来ます。

◆引数指定の例

「2」は「1」より大きく、かつ「1」は「0」より大きい(結果はTRUE):
 =AND(2>1,1>0)
セル[A1]はセル[B1]より大きく、かつセル[B1]はセル[C1]より大きい:
 =AND(A1>B1,B1>C1)
セル[A1]~セル[A10]の合計が50以上で、かつ100未満:
 =AND(SUM(A1:A10)>=50,SUM(A1:A10)<100)
[DataArea]と名前を定義したセル範囲の合計がセル[B1]以上、かつセル[C1]以下:
 =AND(SUM(DataArea)>=B1,SUM(DataArea)<=C1)

◆IF関数との組み合わせ

 IF関数だけを使用しても複数の条件分岐は可能ですが、「全てを満たす」条件が増えるとAND関数と併用した方が見やすくなります。
 例として3つの条件分岐を「IF関数のみ」と「IF関数とAND関数の併用」で比べてみましょう。

セル[A1][B1][C1]の値がそれぞれ「1」である時は「正解」、それ以外は「不正解」と表示:
 ・IF関数のみ
  =IF(A1=1,IF(B1=1,IF(C1=1,"正解","不正解"),"不正解"),"不正解")
 ・IF関数とAND関数の併用
  =IF(AND(A1=1,B1=1,C1=1),"正解","不正解")

 どちらが見易いかは一目瞭然ですよね。IF関数とAND関数とは「条件が多い」そして「全ての条件にあてはまるかどうかで分岐する」場合に併用します。

セル[A1]が50以上で、かつセル[B1]が50以上の時、「合計100以上」と表示:
 =IF(AND(A1>=50,B1>=50),"合計100以上","")
[DataArea]と名前を定義したセル範囲の合計がセル[B1]以上、かつセル[C1]が「3」の時「○」と表示:
 =IF(AND(SUM(DataArea)>=B1,C1=3),"○","")


OR関数の機能と構成

機能:引数にひとつでもTRUEがあれば論理値TRUEを返す。

構成:=OR(論理式1,論理式2,...)

論理式には、結果がTRUE/FALSEになる式を30個まで指定出来ます。

◆引数指定の例

「2」は「1」より大きい、又は「0」は「1」より大きい(結果はTRUE):
 =OR(2>1,0>1)
セル[A1]はセル[B1]より大きい、又はセル[B1]はセル[C1]より大きい:
 =OR(A1>B1,B1>C1)
セル[A1]~セル[A10]の合計が50未満、又は100以上:
 =OR(SUM(A1:A10)<50,SUM(A1:A10)>=100)
[DataArea]と名前を定義したセル範囲の合計がセル[B1]以上、又はセル[C1]以下:
 =OR(SUM(DataArea)>=B1,SUM(DataArea)<=C1)

◆IF関数との組み合わせ

 IF関数だけを使用しても複数の条件分岐は可能ですが、「何れかを満たす」条件が増えるとOR関数と併用した方が見やすくなります。
 例として3つの条件分岐を「IF関数のみ」と「IF関数とOR関数の併用」で比べてみましょう。

セル[A1][B1][C1]の値、何れかが「1」である時は「正解」、それ以外は「不正解」と表示:
 ・IF関数のみ
  =IF(A1=1,"正解",IF(B1=1,"正解",IF(C1=1,"正解","不正解")))
 ・IF関数とOR関数の併用
  =IF(OR(A1=1,B1=1,C1=1),"正解","不正解")

 どちらが見易いかは一目瞭然ですよね。IF関数とOR関数とは「条件が多い」そして「何れかの条件にあてはまるかどうかで分岐する」場合に併用します。

セル[A1]が50以上、又はセル[B1]が50以上の時、「合計50以上」と表示:
 =IF(OR(A1>=50,B1>=50),"合計50以上","")
[DataArea]と名前を定義したセル範囲の合計がセル[B1]以上、又はセル[C1]が「3」の時「○」と表示:
 =IF(OR(SUM(DataArea)>=B1,C1=3),"○","")


NOT関数の機能と構成

機能:引数がFALSEの場合はTRUE、TRUEの場合はFALSEを返す。

構成:=NOT(論理式)

論理式には評価結果がTRUE/FALSEになる値、又は数式を指定します。

◆引数指定の例

結果はFALSE:=NOT(TRUE())
セル[A1]が「1」の場合、結果はFALSE:=NOT(A1=1)

◆AND / OR / IF関数との組み合わせ

 NOT関数はAND関数やOR関数と組み合わせる事で、条件分岐のバリエーションがさらに増します。実際の組み合わせ方は、下のNOTを用いた場合、用いない場合を見比べて下さい。

セル[A1][B1][C1]の値、全てが「1」である時は「正解」、それ以外は「不正解」と表示:
 =IF(AND(A1=1,B1=1,C1=1),"正解","不正解")
セル[A1][B1][C1]の値、全てが「1」である時は「不正解」、それ以外は「正解」と表示:
 =IF(NOT(AND(A1=1,B1=1,C1=1)),"正解","不正解")

セル[A1][B1][C1]の値、何れかが「1」である時は「正解」、それ以外は「不正解」と表示:
 =IF(OR(A1=1,B1=1,C1=1),"正解","不正解")
セル[A1][B1][C1]の値、何れかが「1」である時は「不正解」、それ以外は「正解」と表示:
 =IF(NOT(OR(A1=1,B1=1,C1=1)),"正解","不正解")

セル[A1]が50以上、かつセル[B1]が50以上でない時、「合計100未満」と表示:
 =IF(NOT(AND(A1>=50,B1>=50)),"合計50以上","")
[DataArea]と名前を定義したセル範囲合計がセル[B1]以上でない時、又はセル[C1]が「3」以外の時「○」と表示:=IF(NOT(OR(SUM(DataArea)>=B1,C1=3)),"○","")


TRUE関数の機能と構成

機能:論理値TRUEを返す。
構成:=TRUE()
この関数は引数をもちません。()は省略できますが、関数を表す印なので省略しない事を奨めます。


FALSE関数の機能と構成

機能:論理値FALSEを返す。
構成:=FALSE()
この関数は引数をもちません。()は省略できますが、関数を表す印なので省略しない事を奨めます。


IF関数の応用(1)

◆情報関数との組み合わせ

 情報関数はセルの情報を取得するための関数です。詳細はこちらをご覧下さい→情報関数
 その情報関数の多くはIF関数との相性が良く、組み合わせて使用することにより「セルの情報によって分岐」の判断を行えます。ここでは、情報関数とIF関数の組み合わせを紹介します。

◇ISBLANK(テストの対象):対象となるセルが空白※の場合にTRUEを返す。
 セル[A1]が空白だったら「未提出」、それ以外は「提出」を表示:
  =IF(ISBLANK(A1),"未提出","提出")
 ※非表示は空白ではありません。=""などの数式を入力すると、セルには何も表示されませんが、
   ISBLANKではFALSEになります。空白とは、数式や値がなにも入っていない状態です。

◇ISERR(テストの対象):対象となるセルが「#N/A」以外のエラー値の場合にTRUEを返す。
 セル[A1]が(「#N/A」以外の)エラーだったら「エラー」、それ以外は「正常、又は#N/A」を表示:
  =IF(ISERR(A1),"エラー","正常、又は#N/A")

◇ISERROR(テストの対象):対象となるセルがエラー値の場合にTRUEを返す。
 セル[A1]がエラーだったら「エラー」、それ以外は「正常」を表示:
  =IF(ISERROR(A1),"エラー","正常")

◇ISNA(テストの対象):対象となるセル値が「#N/A」の場合にTRUEを返す。
 セル[A1]が「#N/A」だったら「要修正」、それ以外は非表示:
  =IF(ISNA(A1),"要修正","")

◇ISLOGICAL(テストの対象):対象となるセルが論理値の場合にTRUEを返す。
 セル[A1]が論理値だったら「論理値」、それ以外は「論理値以外」を表示:
  =IF(ISLOGICAL(A1),"論理値","論理値以外")

◇ISTEXT(テストの対象):対象となるセル値が文字列の場合にTRUEを返す。
 セル[A1]が文字列だったら「文字列」、それ以外は「文字列以外」を表示:
  =IF(ISTEXT(A1),"文字列","文字列以外")

◇ISNOTEXT(テストの対象):対象となるセル値が文字列以外の場合にTRUEを返す。
 セル[A1]が文字列だったら「文字列」、それ以外は「文字列以外」を表示:
  =IF(ISNOTEXT(A1),"文字列以外","文字列")

◇ISNUMBER(テストの対象):対象となるセル値が数値の場合にTRUEを返す。
 セル[A1]が数値だったら「数値」、それ以外は「数値以外」を表示:
  =IF(ISNUMBER(A1),"数値","数値以外")

◇ISREF(テストの対象):テスト対象がセル・セル範囲の場合にTRUEを返す。
 セルを参照しているので「セル参照」が表示:
  =IF(ISREF(A1),"セル参照","セル参照ではありません")
 セルを参照していないので「セル参照ではありません」が表示:
  =IF(ISREF(100),"セル参照","セル参照ではありません")

IF関数の応用(2)

 IF関数の応用に、配列数式があります。配列数式の詳細はこちらをご覧下さい。→配列数式
 配列数式は若干難しい内容ですが、複数の数式をまとめる事が出来、使用できる関数も多いため応用範囲が広がります。

◆配列数式例


{=AVERAGE(IF(C3:C9="1級",D3:D9,""))}
  1級者の平均点を算出 。{=AVERAGE(IF(C3:C9="1級",D3:D9))} でも可。

{=MAX(IF(C3:C9="1級",D3:D9,""))}
  1級者の中で最高点を算出 。{=MAX(IF(C3:C9="1級",D3:D9))} でも可。
  対関数:MIN

{=LARGE(IF(D3:D9="1級",E3:E9,""),3)}
  1級者の中三番目の点数を算出 。{=LARGE(IF(D3:D9="1級",E3:E9),3)} でも可。
  対関数:SMALL

{=COUNT(IF(D3:D9="1級",E3:E9,""))}
  1級者の人数をカウント。 {=COUNT(IF(D3:D9="1級",E3:E9))} でも可。
  COUNT関数は引数リストに含まれる数値の個数を返します。前述の数式の正式な意味は
  「IF関数で1級者の点数(数値)を返し、COUNT関数で点数(数値)の個数をカウントする」です。
  似た機能をもつ関数にCOUNTIFがあります。さきの配列数式をCOUNTIF関数で表すと
  =COUNTIF(D3:D9,"1級")
  になります。

{=MATCH(120,IF(D3:D9="1級",E3:E9,""),0)}
  1級者で120点の者は上から何番目か算出。
   {=MATCH(120,IF(D3:D9="1級",E3:E9),0)} でも可。

Excel Tips for Teachers

Copyright (C) 2009 坂江 保 All Rights Reserved.