• ベストアンサー

エクセルで、=IF(A12="a",TRUE)は =A1="a"  ???

エクセルで、 =IF(A12="a",TRUE) は =A1="a" と省略できるのですか? やってみるとまったく同じようなのですが、いまいち不安です。 また、=IF(D4=TRUE,"OK!","No!")も、日頃=IF(D4,"OK!","No!")と略してますが、これも正しいんですよね? 気になったものですから確認させてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 IF関数について、少し補足説明します。 IF関数は、No.1にもあるように、 =IF(条件式,真の場合,偽の場合) という書式ですが、 =IF(条件式,真の場合) と、偽の場合を省略することが出来ます。 ここで偽の場合は、FALSEという論理値を返します。 つまり、質問欄の1つ目の例に当たります。 なお、 =IF(条件式) と、真の場合も省略することは出来ず、 =IF(条件式,,偽の場合) と、空欄にすると、真の場合は数値の「0」を返すことになります。 ちなみに、偽の場合も、 =IF(条件式,真の場合,) と、引数区切りのカンマだけ付けると、空欄と見なされて(省略とは異なる)数値の「0」を返します。 次に、条件式についてですが、 条件式は、 「左辺」+「比較演算子」+「右辺」 の書式になっているものを指します。 ここで、比較演算子とは、 「=、>、<、>=、<=、<>」 を指します。 条件式は、成立/不成立の結果、TRUE/FALSEという論理値を返します。 つまり、 =A1="a" は、条件式の戻り値そのものを表示していることになります。 それに対して、IF関数の方は、条件式を判定した結果、真の場合と偽の場合をそれぞれ実行して表示しています。 その真の場合と偽の場合が、条件式の戻り値とちょうど一致しているということです。 さて、IF関数の第1引数は、通常は上記の条件式を指定しますが、実際はIF関数は第1引数を数値として判断しています。 その判定基準は、第1引数が、 0 → 偽の場合を実行 0以外 → 真の場合を実行 となります。 そして、第1引数が条件式の場合に限り、戻り値の論理値を、 TRUE → 1 FALSE → 0 と数値に変換して判定しているのです。 これが、質問欄の後半の2つの数式の挙動の違いの原因なのです。 =IF(D4=TRUE,"OK!","No!") は、第1引数は「D4=TRUE」という条件式です。 この場合、戻り値は必ずTRUE/FALSE(=1/0)です。 (ただし、D4にエラーが入っている場合を除く) 一方、 =IF(D4,"OK!","No!") の方は、第1引数は「D4」で、これはセルD4の値そのものです。 で、前述のように、IF関数は第1引数を数値として判定するので、このD4が数値(と論理値)以外の場合(文字列など)はエラーになります。 D4が数値(と論理値)の場合は、前述のように、「0」かそれ以外かで判定され、真/偽の場合のいづれかを実行して表示します。 このIF関数の第1引数が数値として判定されているということを利用した例が以下のようなものです。 例えば、A列に数値が1つでもあれば"OK"、1つもなければ(つまり0)"NG"を表示する場合、意味を考えれば、 =IF(COUNT(A:A)>0,"OK","NG") ですが、これを、 =IF(COUNT(A:A),"OK","NG") と、A列の数値の個数(COUNT関数の戻り値)そのもので判定することが出来るわけです。 以上、長くなりましたが、補足説明でした。

shishishishi
質問者

お礼

maruru01さん、詳しく解説していただき、ありがとうございます。 とても勉強になりました。 これからもよろしくご指導をお願いいたします。

その他の回答 (2)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

追加です。 D4セルに真偽値以外が入っていた場合、 =IF(D4=TRUE,"OK!","No!") と =IF(D4,"OK!","No!") の動作は違います。

shishishishi
質問者

お礼

あ、そうですね! 勉強になります。ありがとうございます。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

IF関数は =IF(式,真,偽) ですので、 式A1="a"がTRUEなら真を実行、FALSEなら偽を実行します。 ということは、 =A1="a" でA1セルにaが入れば、上記の式A1="a"はTRUEを返し、A1セルにa以外が入れば、FALSEを返すので同じ動作ですね。 これを踏まえると、 =IF(A12="a",TRUE,FALSE) は =A1="a" と省略できる。 ということです。(ちゃんとFALSEも入れましょう) 今度はD4セルに真偽値のTRUEやFALSEが入っていれば、 IF(D4=TRUE,"OK!","No!") も IF(D4,"OK!","No!") も同じ動作ですね。

shishishishi
質問者

お礼

なるほど、ありがとうございました。

関連するQ&A