• 締切済み

エクセルで時間の引き算ができない

エクセルで00:32'41"83から00:01'41"83を引きたいのですがうまくいきません。関数の「=A1-B1」ではうまくいきません。表示形式がいけないのでしょうか?

みんなの回答

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

最初に、入力は、最初に、#4さんのご提示になった書式をhh:mm:ss.00 入れてから、秒の後に、.01 とか、入力するのは良いとして、 このご質問は、浮動小数点誤差で出てくるわりに知られた問題だったように思います。私は、これを最初に知ってから、かなり年月が経つので、記憶があやふやです。 たぶん、どこの掲示板でも探せば出てくるはずですが、時間の引き算は、そのまま出来ないはずです。 時間の計算は、中身の数値が倍精度型で、つまりは小数点以下の数値を持っているので、「浮動小数点丸め誤差」が発生します。 1/100秒 は、0.00000011574074074074  と無限小数が存在します。 =FIXED(A1-A2,7)*1 or =VALUE(FIXED(A1-A2,7)) このような計算式になるのではないでしょうか? この出た数値を再び計算値に用いると、狂いが生じてしまうはずなのです。 本来、実証できれば一番よいのですが、単に、二点間の引き算のだけでは、A1-A2 でも、表示そのものは、1万行の計算を調べてみましたがありませんでした。ただ、小数点第8位までの数値の比較をとってみると、約千個は同じで、後の残りは、全部狂いが生じています。

moon_sin
質問者

お礼

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

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

00:32:41.83 と 00:01:41.83 なら計算できますが... 上記の表示形式はユーザー定義で hh:mm:ss.00 となります。

すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

値に1/100秒まで持っていますが、この時刻はどのようにして入力したのでしょうか。通常のEXCELの関数では1/100秒までは得られませんね。(Windows APIを利用すれば可能ですが…) となると、文字列として手入力されたのでしょうか。もし1/100秒まで計算させるなら通常の関数では計算できませんね。 もし文字列で入力された時分秒までの値を時刻に変換したいなら =TIMEVALUE(時刻文字列) で計算可能な形式に変換できます どうしてもミリ秒まで計算する必要があるなら 時*3600 + 分*60 + 秒 +(1/100秒)/100 でシリアル値に変換して計算するしかないでしょう

moon_sin
質問者

お礼

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

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

値に1/100秒まで持っていますが、この時刻はどのようにして入力したのでしょうか。通常のEXCELの関数では1/100秒までは得られませんね。(Windows APIを利用すれば可能ですが…) となると、文字列として手入力されたのでしょうか。もしミリ秒まで計算させるなら通常の関数では計算できませんね。 もし文字列で入力された時分秒までの値を時刻に変換したいなら =TIMEVALUE(時刻文字列) で計算可能な形式に変換できます どうしてもミリ秒まで計算する必要があるなら 時*3600 + 分*60 + 秒 +(1/100秒)/100 でシリアル値に変換して計算するしかないでしょう

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

出来ればセルの内容を”セルの内容”と言った感じで表記してもらえませんか?今の表記の仕方だと”00:32”から”00:01”を引きたいと思ってしまうのですが。自分の場合だとセルの書式h:mmでうまく引き算できますよ。

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

関連するQ&A