重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (5件)

00:32:41.83 と 00:01:41.83


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

最初に、入力は、最初に、#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位までの数値の比較をとってみると、約千個は同じで、後の残りは、全部狂いが生じています。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/07/10 12:58

値に1/100秒まで持っていますが、この時刻はどのようにして入力したのでしょうか。

通常のEXCELの関数では1/100秒までは得られませんね。(Windows APIを利用すれば可能ですが…)

となると、文字列として手入力されたのでしょうか。もし1/100秒まで計算させるなら通常の関数では計算できませんね。

もし文字列で入力された時分秒までの値を時刻に変換したいなら =TIMEVALUE(時刻文字列) で計算可能な形式に変換できます

どうしてもミリ秒まで計算する必要があるなら
時*3600 + 分*60 + 秒 +(1/100秒)/100
でシリアル値に変換して計算するしかないでしょう
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/10 12:57

値に1/100秒まで持っていますが、この時刻はどのようにして入力したのでしょうか。

通常のEXCELの関数では1/100秒までは得られませんね。(Windows APIを利用すれば可能ですが…)

となると、文字列として手入力されたのでしょうか。もしミリ秒まで計算させるなら通常の関数では計算できませんね。

もし文字列で入力された時分秒までの値を時刻に変換したいなら =TIMEVALUE(時刻文字列) で計算可能な形式に変換できます

どうしてもミリ秒まで計算する必要があるなら
時*3600 + 分*60 + 秒 +(1/100秒)/100
でシリアル値に変換して計算するしかないでしょう
    • good
    • 0

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

自分の場合だとセルの書式h:mmでうまく引き算できますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!