IF
を和で表す
関数 IF
を 論理式Pとある代数の元A, Bを引数とする関数として、
IF(P,A,B)={AB⋯⋯P=P=TRUEFALSE
と定義しましょう。イメージしているのはExcelです。もし、A, B について和が定義できるとすれば、この関数IF
は
IF(P,A,B)=PA+PˉB
という和で表すことができます。ただし、Pˉは論理式Pの否定とします。PAというのは、論理式Pを代数の元Aに係数倍(スカラー倍)したものです。このように定義します。
PA={A0⋯⋯P=P=TRUEFALSE
このように係数倍を定義すると、たしかにIF(P,A,B)=PA+PˉBが成り立つことが次のように確かめられます。
-
P=TRUE のとき
PA+PˉB=(TRUE)A+(FALSE)B=A+0=A
-
P=FALSE のとき
PA+PˉB=(FALSE)A+(TRUE)B=0+B=B
たしかに関数IF
の結果と一致しています。
Excelにおける係数倍
整数
Aが整数のとき、ExcelはTRUE
とFALSE
を整数1
と0
として評価するため、係数倍は整数倍*
で表せます。論理式をA1 < 2019
とすると、
と書けば、A1
が2019
未満のときA1 - 1988
、2019
以上のとき0
になります。
文字列
文字列を与えられた整数(0以上)の回数繰り返す関数REPT
で表現できます。
と書けば、A1
が2019
未満のとき"平成"
、2019
以上のとき""
になります。
ExcelでIF
を和にする
整数
式IF(A1 < 2019, A1 - 1988, A1 - 2018)
は次の式と結果が同じになります。
確かめてみましょう。たとえば、A1
が2025
とします。このとき、A1 < 2019
はFALSE
、A1 >= 2019
はTRUE
です。そのため、この式は
となり、
と評価されます。
文字列
式IF(A1 < 2019, "平成", "令和")
は次の式と結果が同じになります。
ただし、&
はExcelの文字列連結演算子です。
こちらも確かめてみましょう。たとえば、A1
が2000
であるとします。この式は
と同じ意味になります。よって、
となり、結果は"平成"
になります。
係数倍の分配法則
P(A+B)はPA+PBと分配することができます。つまり、
P(A+B)=PA+PB
が成り立ちます。
-
P=TRUE のとき
P(A+B)PA+PB=(TRUE)(A+B)=A+B=(TRUE)A+(TRUE)B=A+B
-
P=FALSE のとき
P(A+B)PA+PB=(FALSE)(A+B)=0+0=0=(FALSE)A+(FALSE)B=0+0=0
たしかに、P(A+B)=PA+PBが成り立ちます。
係数倍の係数倍
論理式P,Qがあったとき係数倍の係数倍P(QA)はどのように計算できるでしょうか。
P(QA)={QA0⋯⋯P=P=TRUEFALSE=⎩⎨⎧A000⋯⋯⋯⋯(P,Q)=(P,Q)=(P,Q)=(P,Q)=(TRUE,TRUE)(TRUE,FALSE)(FALSE,TRUE)(FALSE,FALSE)
この結果から次が成り立ちます。
P(QA)=(P∧Q)A
ただし、P∧QはPとQの論理積(and)です。なぜなら、
P∧Q=⎩⎨⎧TRUEFALSEFALSEFALSE⋯⋯⋯⋯(P,Q)=(P,Q)=(P,Q)=(P,Q)=(TRUE,TRUE)(TRUE,FALSE)(FALSE,TRUE)(FALSE,FALSE)
が成り立つからです。
IF
の中にIF
があるとき
IF(P,A,IF(Q,B,C)) という IF
の中にIF
があるときはどのように和に展開できるでしょうか。
IF(P,A,IF(Q,B,C))=PA+Pˉ(QB+QˉC)=PA+(Pˉ∧Q)B+(Pˉ∧Qˉ)C
同様に、
IF(P,IF(Q,A,B),C)=P(QA+QˉB)+QC=(P∧Q)A+(P∧Qˉ)B+QˉC
も成り立ちます。
ExcelでIF
のIF
を和にする
整数
式IF(A1 < 2019, IF(A1 < 1989, A1 - 1925, A1 - 1988), A1 - 2018)
を計算しましょう。
=++IF(A<2019,IF(A<1989,A−1925,A−1988),A−2018)(A<2019∧A<1989)(A−1925)(A<2019∧A≥1989)(A−1988)(A≥2019)(A−2018)
ここでA<1989ならばA<2019が成り立ちますので、A<2019∧A<1989=A<1989 です。よって、この式は次のように書けます。
係数倍を右にすれば、
文字列
式IF(A1 < 2019, IF(A1 < 1989, "昭和", "平成"), "令和")
を計算しましょう。
整数の計算とほとんど同じです。
補足(論理和)
論理積は係数倍と次のような関係にありました。
P(QA)=(P∧Q)A
それでは論理和P∨Qはどうでしょうか。PA+QA=(P∨Q)Aは一般には成り立ちません。成り立つのは
PA+QA=(P∨Q)A+(P∧Q)A
です。P,Qが排他的(P∧Q=FALSE)であるときに限り、
PA+QA=(P∨Q)A
が成り立ちます。
補足(排他的場合分けと順序付き場合分け)
場合分けは一般にこう表せます。
=⎩⎨⎧A1A2An⋯⋯⋮⋯P1P2Pn
論理式P1が成り立つときA1、P2 が成り立つときA2、…、Pnが成り立つときAnです。
Excelでは場合分けはIFS
で表せます。つまり、
=IFS(P1,A1,P2,A2,⋯,Pn,An)
です。注意して欲しいのが、この式を和にしたときには、
=P1A1+P2A2+⋯+PnAn
とは一般にはならないということです。
というのも、IFS
はP1,P2,⋯,Pnに順序があります。たとえば、TRUE
になるのがPi,Pj,Pkとします。このとき、IFS
はもっとも先に評価されるPiによって値Aiが確定します。しかし、和の場合は
=Ai+Aj+Ak
となります。
もしIFS
と等しい和を作るとすれば、
==P1A1+P1ˉ(P2A2+P2ˉ(⋯))P1A1+(P1ˉ∧P2)A2+⋯+(P1ˉ∧P2ˉ∧⋯∧Pˉn−1∧Pn)An
逆にこの式が
=P1A1+P2A2+⋯+PnAn
となるのは、P1,P2,⋯,Pn が排他的のときです。排他的であるとはTRUEとなるPiが一意に定まるということです。
Discussion