Excelの計算結果がゼロにならない理由とは?

このQ&Aのポイント
  • Excelのセル計算で、AとBが同じ値であるのにA-Bがゼロにならない理由について説明します。
  • Excelのセルの設定や数式のコピーなどが原因で、A-Bの結果がゼロではなく「#####」と表示されることがあります。
  • 問題は解決するためにif関数を使用することができますが、なぜA-Bの結果がゼロにならないのか納得できません。
回答を見る
  • ベストアンサー

エクセル:AとBが同じ値であるのに、A-Bはゼロではない??

excel2003です。 Aのセルの時刻と、Bのセルの時刻が同じであれば、Cのセルが 0(ゼロ)になるようにしようと試みました。 たとえば、Aが「9:30」、Bも「9:30」のとき、 A - B = C。これで、Cはゼロになるはずだと考えました。 シートのオプションでゼロを表示しないように設定しました。これで、上記の条件であれば、Cのセルは見た目空白になるはずです。 ところが、Cのセルには「#####」が表示されてしまいます。列幅の問題ではなく、負の時刻と認識しているようです。 実際にはA・Bのセルには、直接時刻を入力しているのではなく、数式が入っているのですが、A・Bの値のみを別セルにコピペして引き算した場合、結果はちゃんとゼロになります。 何故でしょうか??Cが「#####」になってしまう理由として、どういうケースが考えられますでしょうか? 実は問題は一応解決していて、Cのセルには下記の式を入れました: =if(A=B,0,A-B) 問題は解決したのですが全然納得できません。

  • rk33
  • お礼率62% (5/8)

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

  • ベストアンサー
回答No.2

パソコン内部の処理では有効桁数の関係で、見た目が同じ値でも 小数点以下の深いところで微妙に数値が異なっていることがあります。 if関数で等しいかどうかを判定する場合は、有効桁数を考慮の上 判定をしてくれるわけですが、引き算を行うと微妙にゴミが残ってしまうことがあります。 これも有効桁数で処理はしてくれるものの、Excelでは時間に負の数を認めていませんので、 ゴミが負になった瞬間、このようなエラーが出ることがあります。

rk33
質問者

お礼

ありがとうございます。 大変参考になりました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>Cが「#####」になってしまう理由として、 セル幅が不足していると言う意味です。 セル幅を広げるときちんと表示されるはずです。 セルの書式設定が「日付」になっている可能性がありますね。

rk33
質問者

お礼

ありがとうございます。 ただ、質問でも書きましたとおり、列幅ではありません。 やはり負の時刻と認識しているようです。 セルの書式は「h:mm」にしています。

関連するQ&A

  • エクセルで#####が表示されてしまう

    エクセルで質問させてください。 時間計算をするエクセル表を作成したのですが、 計算結果のセルに「#####」のエラー表示になってしまうセルがあります。 負であるか大きすぎる日付時間である場合に表示されるというのはわかっているのですが、 同じに入力しているはずなのに、ある行はエラーにならずに、ある行はエラー######になります。 具体的には、0:00のものがエラーになっています。。 Aセルに「7:30」  Bセルに「7:30」  Cセルに「=Bセル-Aセル」として、 よってCセルには「0:00」となりますよね。 なのに、0:00になるセルと######になるセルがあります。 数式の引き算を逆にして「=Aセル-Bセル」にすると、 エラーだった行は0:00になるのですが、 逆にエラー出なかった行が#####になってしまいます。 どうしてでしょうか・・・ 負の数字しゃないんですけど・・・ とても困っています。原因をおしえていただけると大変ありがたいです。 宜しくお願いします。

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

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

  • エクセルで・・・

    よろしくお願いします。 A1のセルに12:43 B1のセルに12:42 C1のセルにB1-A1で-1と表示がなるところ、▲1としたいのですが、どのようにすればよいのでしょうか? 要は、時刻の引き算をしてマイナスになるばあい、「-」の表示を「▲」にしたいのですが・・・ エクセルのバージョンは最新のものです。 よろしくお願いします。

  • 【EXCEL】数式=SUM(A1*B1+A2*B2+・・・+A100*B100)を簡略化したい

    お世話になります。 今Excelで、A1~A100とB1~B100まで数値が入っています。 セルC1に「=A1×b1」、C2に「=A2*B2」…C100に「=A100*B100」と入力しました。 そしてセルC101に「SUM(C1:C100)」と入力して合計を出しました。 (実際はもっと複雑な計算なのですが、説明の為に簡略化しています) そうすると、計算結果セルが多く発生するためファイルサイズが莫大になってしまうのと、それを数千行×6列以上を一気に計算するとXPのリソースが足りないと出て計算できません。 なので2~3列ずつ何回も数式コピペを繰り返すことになっています。 そこで【別セルに掛け算をしてから全部SUMで足す】のではなく【1つのセルに掛け算とSUMを組み込む】という事を考えて =SUM(A1*B1+A2*B2+・・・+A100*B100)を を入力しようとしたのですが、数式が長すぎて四苦八苦です。 この式、なんとか簡略化できませんか?

  • Excelの時刻の計算(マイナス表示)

    時刻のセルでひき算をし、マイナス表示も出したいのですが。。 例えば A1に [2002/5/9 7:00] B1に [2002/5/9 8:00] とあって C1に [B1-A1] と計算式を入力すると [1900/1/0 1:00]となり、表示形式を[h:mm]にすると[1:00]とできますよね。 このときに B1に [2002/5/9/6:00] とあるとC1には[##########]となってしまうのですが、 6:00-7:00なので [-1:00]と表示させることはできないでしょうか。 できればAとBの値そのものは変えたくないのですが。。。お願いします

  • IF(B1="","",A1*B1)の合計

    セルC1に次の計算式が入っています。 IF(B1="","",A1*B1) 行9までコピーされています。 C10のセルで SUM(C1:C9) で合計したいと思っています。 B列に空白がある場合、 #VALUE!のエラーとなります。 IF(B1="","",A1*B1) の計算式を残したままで 解決方法はありませんか?

  • 数式を教えてください。(エクセル)

    教えてください。 A1セルに100、B1に200、C3に-300 A2セルに-50、B2に50、C3に-50 があるとします。 で、縦の計算法を常に引き算をしたいのです。(A1-A2のように) オートSUMの場合、Aの列はちゃんと計算できると思うのですが、そうするとBの列は250になってしまいますよね。 この答えは200-50=150としたいのです。 またC列は、-300引く-50で、答えは-250としたいのですが・・・ マイナスを認識しつつ、セルの数値がプラス・マイナスにかかわらず すべて引き算計算をしたいのですが、 そういう数式ってありますか?

  • エクセルで空白を無視して値を抽出したい

    エクセル2007です。どなたかご教授お願いします。 a1からg1のセルで、b1とd1に数値が入っていて、 後のセルは空白だとして、数値の入っているセルの値のみを、 空白を詰めてa2行に移すにはどうすればいいでしょうか? b1d1がa2b2に入るようにしたいです。 空白とセル数は変動するので、応用が利くような数式を 教えていただきたいです。

  • セルの内容を合わせるエクセル関数

    お世話になります。 エクセルの関数にて、下記条件を満たす関数が作れないので 分かる方がいましたら教えてください。 A列には文字列が、B列には空白か1の数字がランダムに(1番上の行は必ず空白セル)入力されています。 これに対して、B列に空白から1が続いているセルまでをひとくくりとして、 右側のセルに表示させたいです。 画像では C2セル=A2 C3セル=IF(B3=1,C2&A3,A3)としてC4セル以降にコピペ D2セル=IF(B2="",C2,"")としてD3セル以降にコピペしていますが、 C列でひとくくりになるセルが下へ行ってしまい、 希望する結果に表示されないです。 関数が組める方がいましたらご伝授頂けますでしょうか。

  • Excel セルの書式設定

    Excel2002を使っています。 セルB1に、数式 =A1 を設定しています。 さらに、セルB1には、セルの書式設定で、ユーザー定義 "*** " @ " ***" を設定しています。 セルB2は、数式 =A2 セルB3は、数式 =A3 ・ ・ ・ (上記のユーザー定義は B列に設定されています。) セルA1に『チョコレート』と入力したら、 セルB1には、『*** チョコレート ***』と表示されます。 もし、セルA1が空白の場合『*** ***』が表示されます。 でも、セルA1が空白なら、セルB1も空白にしたいのですが、その方法はありますでしょうか? よろしくお願いします。

専門家に質問してみよう