IF分類:論理 2009.02.06
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)} でも可。