• ベストアンサー

空白セル

Excel2007です 仮にC1のセルに=A1-B1の計算式でA1かB1のセルを空白にすると#VALUE!エラーがでます 空白セル=0(ゼロ)と出来ないでしょうか

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆多分、「空白セル」というのは、Null("")のことではないでしょうか? =IF(ISNUMBER(A1),A1,0)-IF(ISNUMBER(B1),B1,0) ★いかがでしょうか? 

2324
質問者

お礼

maron--5さんありがとうございます エラーは出なくなりましたが たかがA-Bにこれだけの関数を入力しなければ いけないのか??(-_-;)。

すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#79209
noname#79209
回答No.7

> B1のセルを空白にすると#VALUE!エラーがでます > エラーは出なくなりましたが たかがA-Bにこれだけの関数を入力しなければ いけないのか? 多分、空白というのが、「""」や「" "」の文字列だからでしょう。 よく、計算式で、「=IF(A3=□△,"",・・・」などと、条件によって表示させたく無い場合、 「""」をつかう例をよく見かけます。 しかし、こうしてまうと、この「""」となったセルを別の計算式で使うと、「#VALUE!」エラーが起きます。 これを「=IF(A3=□△,0,・・・」と「0」にして、表示書式を「#,###」としたり「#,###円;-#,###円;」と ゼロの時は表示されないようにしておけば、「#VALUE!」エラーはでません。 「たかがA-Bにこれだけの関数を」と言われますが、「計算そのもの」と「お化粧」とは別の観点のものだと理解して下さい。 因みに、A1にもB1にも全く何も入っていない状態で、「=A1-B1」とすれば、エラーは起きず、「0」が表示されるだけです。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 #4 の回答者ですが、ちょっと訂正させてください。思い出しました。 Lotus1-2-3との互換性を保つための関数として、 =N(A1)-N(B1) という書き方がありました。私は、SUM関数を使いましたが、ひとつのセルの場合は、上記の書き方が良いかと思います。複数のセルの場合に、SUM関数を使ってください。 なお、ご質問の中では、詳しく書かれていなかったようで、一部の方の誤解が見受けられたように思います。日本語では、いくつかある空白の区別があまりはっきりしません。 ご質問者さんの空白は、あえて書くと、「 」←半角の空白文字列(' ')のことだと思います。数式なら、="" ←「""」は、「長さ0の文字列」といいます。 Excelのセルでは、「長さ0の文字列」(または、空白文字列も含む)も、空白(Empty =Blank)も同じように見えません。ワークシート上では、セルに何もないことを、"BLANK"として、ISBLANKという関数で判定できます。しかし、空白(Empty = Blank)は、数値としては、「0」と扱われますが、長さ0の文字列も、半角空白も、文字列としての認識で、数値として「0」とは扱われません。 Null(ヌル)というのは、「Null文字」というように、「""」を、ワークシート上では国内外で使われることもあります。Null文字とは、意図的に空白値を入れるという意味なのだろうと思います。ただし、プログラミングをしている人は、Nullは、Null値として別にありますから、「長さ0の文字列」と言っています。 ただ、もともとすべては、Lotus社の表計算が原点と言っても過言ではありません。ですから、概ね、Lotus1-2-3でも同じはずです。ところが、Excelのオリジナル設定では、長さ0の文字列(「半角の空白文字列」を含む)は、文字列として扱われ、数値の計算には相応しくないとして、エラー値 #VALUE! を返すようになっています。 エラー値 #VALUE! の意味は、「引数や演算子のデータ型が正しくありません」ということで、数値が必要な部分に、文字列が使用されている場合や、引数がひとつしか入らないものに、複数の引数が入っていることを意味しています。 私が、SUM関数を使ったのは、この関数は、引数として、文字列は「0」とするという約束事があるからで、これは、ご存知だと思いますが、Lotus側の発想で、古くからMS社も採用していました。ですから、Excelでは、同系列の関数に同じ仕様が受け継がれています。SUMPRODUCT, PRODUCT 関数が、それに当たります。N()関数は、Lotusと互換性を保つために作られたと言われています。 なお、複数のセルの場合に、「空白文字列」、または、「長さ0の文字列」があるのか判定する場合は、ご存知だと思いますが、 =IF(COUNT(A1:B1)=COUNTA(A1:B1), "空白文字はありません", "空白文字はあります") という判定が出来ます。

2324
質問者

お礼

Wendy02さん ありがとうございます。 Lotus1-2-3 が好きだったけど残念です(-.-)。

すると、全ての回答が全文表示されます。
  • RiRiEL
  • ベストアンサー率53% (1140/2129)
回答No.5

#1です。 2003を使用して試しにテストしましたが、質問のように簡単な計算式 例えば =A1-B1 の計算式をC1に入れて、A1又はB1を空欄にした場合は0を認識します。 しかし、複雑な式になると、場合によっては#VALUE!エラーが表示されることがあります。これは私が作成したファイルの計算式の一部で、差分を求める計算ですが、このように使っています。 =IF(AND(K86="",N86="",Q86=""),0,F86-IF(K86>N86,IF(K86>Q86,K86,Q86),IF(N86>Q86,N86,Q86))) 解説しますと、K86、N86、Q86が全て空欄であれば0を入力、そうでなければ(いずれか1つでも数が入っていれば)、F86からK86、N86、Q86の中でもっとも大きな数字をひく計算式です。 見たとおり複雑なので、参考程度で見ていただければ幸いです。

2324
質問者

補足

RiRiELさん ありがとうございます 私は2003を使ったことがありません 2003と2007では違うのではないでしょうか (^^ゞ。 

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 #VALUE! という意味が、計算式の代入値では違うものが入っているという意味ですね。 Lotus1-2-3方式にするには、 >この前までロータス123を使ってましたロータスでは 何もしなくても 空白セルは0となってましたExcelの設定で空白は0とならないのでしょうか  ツール-オプションの「移行-シートオプション-計算方式を変更する」 という方法も悪くはないけれども、以前の質問された方はもいますが、最後には、アプリケーションのシステムの変更のところになって、私はお手上げ状態になってしまいました。 出来れば、Excelの標準的な方法で行ってほしいです。 あえて書くなら、こういうようになります。 =SUM(A1)-SUM(B1) ただ、出来れば、計算式が、引き算ではなくて、セルに、マイナス値を入れれば、 =SUM(A1:B1) で、エラーは出さないで済みます。

2324
質問者

お礼

Wendy02さん 回答ありがとうございます ずいぶんと簡単になり 勉強になります 

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

2002だが、=A1-B1はA1,B1またはB1など空白でも、0になります 。2007でもこの辺は変わってないと思うが。 質問の前提に疑義あり。 ただ原因となると??? 一度データと式をクリアして、式とデータをもう一度入れなおしてどうなりますか。

すると、全ての回答が全文表示されます。
  • RiRiEL
  • ベストアンサー率53% (1140/2129)
回答No.1

おはようございます。 =IF(A1="",0,A1)-IF(B1="",0,B1) セルが空白ならば、0が入る。セルに数字が入っていればその数字が入る。 これでどうでしょうか?

2324
質問者

補足

RiRiELさん 早速の解答ありがとうございます 私のPCでは やはりエラーがでます この前までロータス123を使ってましたロータスでは 何もしなくても 空白セルは0となってました Excelの設定で空白は0とならないのでしょうか 

すると、全ての回答が全文表示されます。

専門家に質問してみよう