エクセル数式で=TRUEを省略すると?

このQ&Aのポイント
  • エクセルで数式を記述する際、=TRUEを省略すると結果が変わることがあります。
  • 厳密には、A1がTRUEでなくとも 0以外の数値ならば「はい」が返ることを知っておく必要があります。
  • A2>0という新条件を加えても、A1の条件については何も変わらないのに答えが変わるのはなぜでしょうか?
回答を見る
  • ベストアンサー

エクセルの数式で=TRUEを省略すると

エクセル2003です。 初歩的な数式について疑問がでました。 たとえば、セルA1の値がTRUEなら「はい」、そうでなければ「いいえ」を返したい場合、 =IF(A1=TRUE,"はい","いいえ") と書くのが正しいのでしょうが、経験的に =IF(A1,"はい","いいえ") と=TRUEを省略しても同じ答えを返すので、ついついこのような楽な書き方をしてしまいます。 厳密には、A1がTRURでなくとも 0以外の数値ならば「はい」が返るのは存じております。 ところが、上記の条件に、「セルA2の値が0より大きい」という条件を加えると、追加条件の「A2が0より大きい」を満たす場合、答えが変わってしまいました! =IF(AND(A1,A2>0),"はい","いいえ") と=TRUEを省略すると A1が空白であっても「はい」が返ります。 もちろん、 =IF(AND(A1=TRUE,A2>0),"はい","いいえ") と省略せずに書くと正しく「いいえ」が返ります。 A2>0という新条件を加えても、A1の条件については何もかわらないのに答えがかわるのはどうしてでしょうか?

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

AND関数のヘルプには「引数として指定した配列や参照に、文字列または空白セルが含まれる場合、これらの値は無視されます。」とあります。 =AND(A1,A2>0) で、A1が空白や文字列の場合、A1は無視されるようです。

参考URL:
http://office.microsoft.com/ja-jp/excel-help/HP010342169.aspx?CTT=5&origin=HA010342655
emaxemax
質問者

お礼

なんと、AND関数の仕様でしたか・・・・。 でも仕様というよりはバグといいたいですねえ。 ありがとうございます。

関連するQ&A

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • エクセルの数式質問

    条件1.)A列の1行目から10行目までのセルに数値が入っているとします。 条件2.)A1からA10までの全てのセルに数値が入っているわけではなく、とびとびで入力されている。 この場合に、A10もしくは、よりA10に近いセルに入力してある数値を返す数式はどのようになるでしょうか? さらに、1~10行目のセル内に数値が何も入っていない場合には、空白を返してほしいのです。 よろしくお願いします。

  • EXCELの数式について教えて下さい

    =IF(ISBLANK(H2)," ",IF(H2>1000,3000+6*700+6*(H2-1000),IF(H2>300,3000+7*(H2-300),"3000"))*65%) 上記の数式は正しくありませんか? H2セルに何らかの数値が入っている場合は「IF(H2>1000,3000+6....」以降の計算を行い、その結果が 隣のセル(I2)に出て、空白の場合隣のセルに空白で返す、ということをさせたいのですが、この数式ですとどうしても「#VALUE!」が返ってきてしまいます。 何か良い方法はないでしょうか?

  • 【エクセル】条件によって数式を削除する

    エクセルで以下のようなことは実現可能でしょうか? たとえば ・A1の値が「a」のときはC1にはB1を検索値としたルックアップの値を返す。 ・A1の値が「b」のときはC1はルックアップを使用せず直接値を入力させる。 つまり、A1の値によって、C1セルの数式を削除し、完全に空白にするということです。 「IF」関数等ではC1セルを空白にできても数式は残ってしまうため、実現することはできません。 わかりやすく言えば、「条件付書式」では条件によってセルの文字色や背景色を変更することしかできないと思いますが、それをセルの値も含めて変更するような感じです。 方法がお分かりの方、お教えください。

  • エクセル2007の大小比較質問。

    エクセル2007の大小比較質問。 数式でB1というセルの答えが85以上ならAのセルを赤く表示するという式についてです。 条件付き書式のやり方は分かるので省略します。 A1のセルに =B1>85 と入力します。 B1のセルには文字列が入力されています。 =B1>85 この式の場合は TRUE =B1<85 この式の場合は FALSE B1に数式が入力されていて、その答えが空白表示だった場合も TRUE になります。 空白表示=0 (どうして85より大きいのか?) 文字列=計算不能 にはならないのでしょうか? このロジックについてご説明をお願い致します。 また空白表示と文字列の場合は除くという関数(<>””ではなくIFなど)がありましたらお教えください。 よろしくお願い致します。

  • エクセルの数式

    教えてください! =IF(R1="5","",Q3+1) 簡単に言いますと、"5"の時は空白セルにして、それ以外はQ3の数値に1をプラスする数式なんですが、 "5"だけじゃなく、"7"の時や"9"の時も空白セルにしたいんです。 OR関数を組み合わせればいいんですか? 複数の条件を理論値に置く時はどおしたらいいんですか?

  • Excelの数式について教えてください。

    =IF(AND($A7="",$I7="",),"",IF($X7=$AA$13,IF(AND(NOT($A7=""),NOT($I7="")),$H7+$P7,IF($X7=$AA$13,IF(NOT($A7=""),$H7,IF($X7=$AA$13,IF(NOT($I7=""),$P7))))))) 何とか上記の数式を作ったのですが、 (X列、AA列は色々な店名が入力されています。)X列の店名が、AA列の店名に合致すると、正常に計算されますが、合致しないと"FALSE"が表示されます。 合致しない場合は、"FALSE"でなくセルを空白表示にしたいのでが、数式を教えてください。 Excel2003 セルの書式設定:X列、AA列は標準、他の列は数値です。この式はQ列に入力されています。 よろしくお願いいたします。

  • EXCEL(エクセル)の関数について

    こんにちは、お世話になります。 エクセルの数式で困っており、ご教示頂きたいです。 C1のセルに、値を返させたいのですが、 A1の値が◆でB1が空白セルでなければ◇ A1の値が●でB1が空白セルでなければ○ A1の値が▲でB1が空白セルでなければ△ A1の値が■でB1が空白セルでなければ□ 、と返させたいです 全ての条件が満たされない場合は空白セルを表示させたいのですが、これを可能にするにはどのような数式を用いればよいでしょうか? 宜しくお願いします。

  • エクセルの条件付き書式のセルに数式がある場合

    エクセルの条件付き書式で、ある値以上の場合は、セルの色を変えたいと 考えていますが、セルに数式を入れているためか、値が入っていないのに セルに色がつきます。 具体的には下記に記します。 A1に金額、B1に個数でC1に合計金額を表示させて 合計金額の値によってC1のセルの色を、変えたいと考えています。 C1にはA1とB1に値が入っていない場合は、セルを空白にしたいため =IF(B1="","",A1*B1)という式を入れています。 そこで質問ですが (1)なぜセルが空白で値も入っていないのにセルに色がつくのでしょうか? (2)値が入っていない場合はセルに色がつかない方法はありませんでしょうか? よろしくお願いします。

  • エクセルの数式で困っています

    入力数値によって数字が変わるという計算式を作成していますが 例 A1セル=1000 B1セル= 1~10  C1セル=A1*1*0.7  ※C1セル答え700 A1セル=1000 B1セル=11~20  C1セル=A1*1.3*0.7   ※C1セル答え910 A1セル=1000 B1セル=21~30  C1セル=A1*1.6*0.7   ※C1セル答え1120 A1セル=1000 B1セル=31~30  C1セル=A1*1.9*0.7   ※C1セル答え1330 B1セルが10増えていく毎にC1セルのA1に対する掛け率が変わってきます 1~10=1.3倍 11~21=1.6倍 30~41=1.9倍 :  720~731まで 上記のように10増える毎に0.3倍づつ増えていきます A1セルは色々な数値が入り、B1セルに数値を入力しC1セルに答えを出すといった事で 現在IF関数をつかってやっていますが分岐にも限界があるので・・・・ 現在の数式です。 =IF(B1<=10,A1,IF(B1<=20,A1*1.3,IF(B1<=30,A1*1.6,IF(B1<=40,A1*1.9))))*0.7 わかりづらい説明で申し訳ありませんが ご教授宜しくお願い致します

専門家に質問してみよう