あなたはほとんどそこにいました、これで試してみてください:
B2 = 41165.4444365394
C2 = 41165.4444321412
=(VALUE(TEXT(B2,"ss.000"))-ROUND(MOD(B2*86400,INT(B2*86400)),3))<>(VALUE(TEXT(C2,"ss.000"))-ROUND(MOD(C2*86400,INT(C2*86400)),3)
VALUE(TEXT(B2,"ss.000")) -> gives you 59,317
VALUE(TEXT(C2,"ss.000")) -> gives you 58,937
MOD(B2*86400,INT(B2*86400))
-> is more appropriate here than substracting, but basically the same thing
編集: 数学のみを使用
私はこれについて100%確信が持てませんが、ミリ秒の場合ほど時間値を単純化することはできません。これが理由です:
Excel は、1.00001 のような値を 1900 年 1 月 1 日 00:00:01 として解釈します。
前の部分.
は日付、後の部分は時刻です。
残念ながら、時間は .00000 から .99999 の間で実行されますが、平均的な 1 日は 86400 秒しかないため、0.0000115740740740741 がそれらの間の係数です。
0.00038 をこの係数で割るか、86400 で乗算すると、32.832 が得られます。これは、Excel と同様に 33 秒に丸められます。これを使用して、指定された時間の秒数を取得できます。
編集:
ここに私の最終的な解決策があります
=INT(MOD(B2,INT(B2))/0.0000115740740740741))
これにより、いつでも秒に変換されるため、テキスト形式なしで比較できます-次のように:
=INT(MOD(B2,INT(B2))/0.0000115740740740741))<>INT(MOD(C2,INT(C2))/0,0000115740740740741))
ミリ秒について心配する必要はありませんINT
。
ああ、これが私の情報源であり、正しい手がかりを与えてくれました:
http://support.microsoft.com/kb/214094/EN-US
編集Barry Houdini のおかげで、いくつかの追加情報を追加します。
=INT(MOD(B2,INT(B2))/0.0000115740740740741)
=INT(MOD(B2,INT(B2))*86400)
=INT(MOD(B2,1)*86400)
-> 38399 seconds of the day, without ms
-> shows only time differences regardless of date
=MOD(B2,1)*86400
-> 38399.317 seconds of the day, with ms
=INT(B2*86400)
-> 3556697399 seconds since 1.1.1900
-> shows time & date differences
=INT(MOD(B2*24*60*60,60)) (=INT(MOD(B2*86400,60)))
-> 59 seconds, regardless of time & date, only the current seconds part
=INT(MOD(B2*24*60,60))
-> 39 minutes
=INT(MOD(B2*24,60))
-> 10 hours