• ベストアンサー

エクセルでこんなことが!セルには何が入っている?

エクセル2000で式を作ったところ、どうしてもわからない現象が起きて困っています。 L列に他のシートから列をコポーしました。 M列に、=IF(L1>0,TRUE,FALSE) を下までドラック N列に、=IF(L1="",TRUE,FALSE) を下までドラック すると、 MもNも「TRUE」なのです! L列に入っているのは「""」で、かつ0より大きいということになります。いったい何が入っているのでしょうか? ためしに、L列のセルを選択してデリートすると、そこだけはMは「FALSE」になります。 こんなことってあるんでしょうか?

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

  • ベストアンサー
  • fmajin
  • ベストアンサー率61% (75/122)
回答No.2

一般に「""」は何もない、というように解釈しますけども、「""」は「空白文字列」という「文字列」の仲間になります。空白文字列というと、スペースキーを押して挿入する空白文字と混同してしまいそうですが、「""」は「何もない文字列」という意味合いとなります。 つまり、まったく何も入力されているブランクセルと「""」が返されているセルは異なるんですね。通常は、問題ないことも多いですが、ブランクセルは「ISBLANK」関数でのみ判断できます。 で、「""」は文字列の仲間となり、文字列は内部的に「1」と判断されます。「="文字列">0」と入力すれば、「TRUE」と帰ります。「="">0」も同様ですね。 ですので、目に見えないけども「""」が入っているということでしょう。だから、クリアすれば、思っていた通りの結果が得られるということです。 余談ですが、TRUEやFALSEという論理値も内部的には、値を持って行って、「TRUE」=1、「FALSE」=0となります。これは「=TRUE*1」や「=FALSE*1」という数式を入れてみると確認できます。 ところが今回試して気づいたのですが、「=FALSE>0」は「TRUE」になるんですねぇ。不思議な仕様です。

AQUALINE
質問者

お礼

>「""」は「空白文字列」という「文字列」の仲間になります。 え!そうなんですか、知りませんでした。 これまで、空白=""としてきましたので混乱してしまいました。 でもfmajinさんの説明を聞き、試してみてやっと納得できました。 ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

L1にFALSEといれます。 http://www.kentei.ne.jp/kakunin/quali/column/knowhow/030815/030815.html にあるようにFALSE値が入ります。 L2セルに=L1+1と式を入れます。値はFALSEは0のようです。 しかし、L2に=IF(L1=0,"a","b")と入れるとbになります。計算上は0の値とするが、比較する場合は数値0では ないようです。 同じくM1に=IF(L1>0,TRUE,FALSE)を入れるとTRUEになります。M2に=M1+1を入れると2になります。これからするとTRUEは1です。しかし=IF(M1=1,"a","b")をM3に入れるとbになります。1ではないようです。 かのごとく、””、TRUE、FALSEを比較に使う時は、注意が必要のようです。一体FALSEやTRUEや空は何なんだ。INSIDEエクセルの仕組みが知りたいが記述に出食わしません。多分、セルの値とかの同一レベルでなく、長さが0とか、セルでないところにセットされている状態とか、別のところ(こと)を見ているのでしょう。

AQUALINE
質問者

お礼

なるほど、奥行きの深い問題なんですねえ。 ありがとうございました。

回答No.1

空白文字列""を返すような数式が入ってたり、その結果を「値とし てペースト」したりした時にそういうことになります。

AQUALINE
質問者

お礼

数式は入っていませんが、確かにたのデータから「値」としてペーストしました。 ありがとうございます。

関連するQ&A