• ベストアンサー

excelのtrue関数、false関数

excel2003を使っています。 true関数、false関数の具体的な使い方が分かりません。 ヘルプやネットで確認しても、 「他の表計算アプリケーションとの互換性を維持するために用意されている関数です。」 とあるだけなので、抽象的で困っています。 具体例で教えて頂けると有り難いです。 よろしくお願いします。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.5

> =TRUE()*1の演算の意味がよく分かりません。  __A__ 1 =TRUE() 2 =TRUE() 3 =TRUE() 4 =TRUE() 5 =SUM(A1:A4) としてもTRUE()がブーリアン値なので、「=SUM(A1:A4)」は計算できず0となってしまいます。 しかし以下のようにして  __A__ 1 =TRUE()*1 2 =TRUE()*1 3 =TRUE()*1 4 =TRUE()*1 5 =SUM(A1:A4) 「=TRUE()*1」と計算させれば、「TRUE()」が自動的に型変換され数値として計算され「1」となるため、 「=SUM(A1:A4)」が「4」と計算できるのです。 ただし「=TRUE()*1」自体は計算式としては意味がないですが...

a-haru
質問者

お礼

今度は分かりました。 お手を煩わさせて済みません。有難うございました。

その他の回答 (4)

noname#79209
noname#79209
回答No.4

#3です。追加します。 TRUE関数やFALSE関数は直接SUM関数では演算できませんが、 =TRUE()*1 などと一度演算させれば可能です。

a-haru
質問者

お礼

vizzar様、ご丁寧に有難うございます。 Accessでは True = -1 ,False = 0でexcelとは違うというのは理解できるのですが、=TRUE()*1の演算の意味がよく分かりません。 お手数ですが、もう少々詳しく教えて頂けると有り難いです。

noname#79209
noname#79209
回答No.3

直接の回答ではありませんが、TRUE、FALSEは1、0の数値として利用できますよ。 エクセルの場合、IF関数を使って、 =IF(A1>=30,9000.1000) と書かなくても、 =1000+(A1>=30)*8000 と書けます。 これがACCESSだと TRUE=-1、FALSE=0なので、 =1000-(A1>=30)*8000 と「+」を「-」に変える必要があります。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 あまり、そのこと自体は、Lotus1-2-3と共用しなければ、気にしなくてよいと思います。「他の表計算アプリケーション」というのは、Lotus1-2-3のことを指します。 TRUE /FALSE のことを「ブール値」といいますが、Lotus1-2-3の場合は、数値として評価しますが、Excelのはあくまでも、ブーリン値のTRUE/FALSE です。ブール値は、演算(足し算、掛け算など)をさせれば、数値には変わりますが、ブール値は、そのままでは、数字として評価してくれません。 Excel → Lotus1-2-3 に数式を移行した場合に、不都合が出るのかと思います。理由は、ブール値を認識してくれないからだと思うのです。 =IF(A1=1,1) たとえば、Excelの場合は、A1 に「1」を入れれば、1が出ますが、それ以外では、FALSE と出ます。ところが、Lotus1-2-3では、それが、0 と出ます。 だから、TRUE をSUM関数で合計を出そうとしても、Excelでは、あくまでも、0ですが、Lotus1-2-3では、数値としてカウントされます。 いずれにしても、Excelでは、この TRUE(), FALSE() は、仮に関数として用いていても、そのままでは数値とは認識しませんので、まったく役には立っていないはずです。 なお、TRUE が、-1と出る仕様は、理屈は簡単なのですが、まったく違う言語形態です。(2byte の255は、-1として表示されるからです)

a-haru
質問者

お礼

とても分かり易くご説明頂いて、有難うございます。 Lotusは名前こそ知っていますが、見た事もなく、仕様が分からなかったのですが、理解できました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

Accessでは True = -1 ,False = 0 Excel,Lotus1-2-3では True = 1 ,FAlse = 0 のように論理値の使い方に差があるためではないかと... 例えれば、日本の東西の500Hzと600Hzの電気規格と同じで 販売開始時に統一していなかった為に、起きた悲劇です。

a-haru
質問者

お礼

ご解答有難うございます。 Accessとtrue関数、false関数を交えた互換性が必要なケースって、どんな場合でしょうか? 何か思いつくのがあれば、是非教えて下さい。

関連するQ&A