1

SECOND()以下の例では、丸めやセルの書式設定を使用せずに、Excel のシリアル日付/時刻の秒をどのように計算できますか? これを数分間延長するにはどうすればよいですか?

下の例 (画像の最後の行) のシリアル値は次のとおりです。

     Right: 41165.4444365394
     Left: 41165.4444321412

上記の例は、以下の 2 つの式で条件付き書式設定されています ( true の場合停止をオンにし、優先順位を示しています)。

2番目10:39:58の関数はとの違いを認識できないため、 「表示のみ秒」の解像度のものと10:39:59一致せず、ミリ秒の計算が正常に機能することを考えると、「ミリ秒の解像度を表示」を続けているようです。

    To see if the seconds are different, first: =SECOND($B2)<>SECOND($C2)
    To see if only milliseconds have passed between the two times:
    =ROUND(($B2*86400-INT($B2*86400))*1000,0)<>ROUND(($C2*86400-INT($C2*86400))*1000,0)

丸められていない秒と分を (別々に) 提供するために、何に対してシリアル番号を乗算する必要がありますか?

4

2 に答える 2

1

FLOOR 関数を使用して区別してみてください。つまり、

=FLOOR($B2,"0:00:01")<>FLOOR($C2,"0:00:01")

これにより、たとえば、秒が同じで分が異なる場合も区別されます。

編集:これは同じことをします

=INT($B2*86400)<>INT($C2*86400)

于 2012-09-20T16:30:10.543 に答える
0

あなたはほとんどそこにいました、これで試してみてください:

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
于 2012-09-20T14:19:43.860 に答える