- ベストアンサー
エクセルでこんなことが!セルには何が入っている?
エクセル2000で式を作ったところ、どうしてもわからない現象が起きて困っています。 L列に他のシートから列をコポーしました。 M列に、=IF(L1>0,TRUE,FALSE) を下までドラック N列に、=IF(L1="",TRUE,FALSE) を下までドラック すると、 MもNも「TRUE」なのです! L列に入っているのは「""」で、かつ0より大きいということになります。いったい何が入っているのでしょうか? ためしに、L列のセルを選択してデリートすると、そこだけはMは「FALSE」になります。 こんなことってあるんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一般に「""」は何もない、というように解釈しますけども、「""」は「空白文字列」という「文字列」の仲間になります。空白文字列というと、スペースキーを押して挿入する空白文字と混同してしまいそうですが、「""」は「何もない文字列」という意味合いとなります。 つまり、まったく何も入力されているブランクセルと「""」が返されているセルは異なるんですね。通常は、問題ないことも多いですが、ブランクセルは「ISBLANK」関数でのみ判断できます。 で、「""」は文字列の仲間となり、文字列は内部的に「1」と判断されます。「="文字列">0」と入力すれば、「TRUE」と帰ります。「="">0」も同様ですね。 ですので、目に見えないけども「""」が入っているということでしょう。だから、クリアすれば、思っていた通りの結果が得られるということです。 余談ですが、TRUEやFALSEという論理値も内部的には、値を持って行って、「TRUE」=1、「FALSE」=0となります。これは「=TRUE*1」や「=FALSE*1」という数式を入れてみると確認できます。 ところが今回試して気づいたのですが、「=FALSE>0」は「TRUE」になるんですねぇ。不思議な仕様です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
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とか、セルでないところにセットされている状態とか、別のところ(こと)を見ているのでしょう。
お礼
なるほど、奥行きの深い問題なんですねえ。 ありがとうございました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
空白文字列""を返すような数式が入ってたり、その結果を「値とし てペースト」したりした時にそういうことになります。
お礼
数式は入っていませんが、確かにたのデータから「値」としてペーストしました。 ありがとうございます。
お礼
>「""」は「空白文字列」という「文字列」の仲間になります。 え!そうなんですか、知りませんでした。 これまで、空白=""としてきましたので混乱してしまいました。 でもfmajinさんの説明を聞き、試してみてやっと納得できました。 ありがとうございます。