![計算可跨越兩天的時間持續時間的公式](https://rvso.com/image/1568503/%E8%A8%88%E7%AE%97%E5%8F%AF%E8%B7%A8%E8%B6%8A%E5%85%A9%E5%A4%A9%E7%9A%84%E6%99%82%E9%96%93%E6%8C%81%E7%BA%8C%E6%99%82%E9%96%93%E7%9A%84%E5%85%AC%E5%BC%8F.png)
答案1
可能最優雅和最簡單的解決方案是這個答案Fixer1234 在中提到這則評論:
=MOD(B1-A1,1)
請注意,它假設兩個值都只是時間值(或日期部分將被截斷),即每個值都小於 1,且持續時間小於 24 小時。
解釋:
這是有效的,因為對於串列日期時間值,1 對應於 24 小時,而僅時間值是小於 1 的日期時間值。
- 如果
B1 >= A1
那麼MOD(B1-A1,1)
→B1-A1
如預期的
或 - 如果
B1 < A1
thenMOD(B1-A1,1)
相當於1-(A1-B1)
(sinceMOD(-n,m)=m-MOD(n,m)
) 給予正確的「補」持續時間
另一種解決方案(您判斷它是否更簡單/更優雅;-))是:
=(B1<A1)+B1-A1
解釋:
這是有效的,因為在算術運算中使用時,TRUE
值被隱式強制轉換為 a 1
,FALSE
值被強制轉換為 a 。0
因此:
- 如果
B1 >= A1
那麼(B1<A1)
→0
且公式變成B1-A1
或 - 如果
B1 < A1
那麼(B1<A1)
→1
且公式等價於1-(A1-B1)
請注意,此公式將正確運行即使兩個值都是日期時間和相隔超過24小時!這是不是第一個公式的情況,所以第二個公式是一個更有用/更通用的公式。
答案2
Ctrl+ Shift+;只是將當前時間放入沒有日期戳記的單元格中,正如 @Akina 在他的回答中指出的那樣,它不會鎖定任何內容。
NOW()
向單元格添加日期戳記以及時間。若要查看該內容,請按一下未格式化的空白儲存格或任何General
格式化的儲存格並輸入=NOW()
.在輸入此內容時,我得到了21/08/2018 11:25
。
如果您放入=NOW()
單元格A1
並=NOW()+TIME(23,0,0)
放入單元格B1
,然後放入=B1-A1
單元格C1
並格式化單元格,Time
您將獲得23:00:00
。
如果您輸入的時間沒有日期戳,則需要使用IF()
公式來確定第二個時間是否低於第一個時間(時間範圍超過午夜)。下面將計算儲存格中的時間B1
與儲存格中的時間之間的時差,A1
無論結束時間是否超過午夜。無論有沒有日期戳,它都可以工作,因為日期戳會被忽略。
=IF(B1<A1,MOD(B1-A1,1),B1-A1)
公式解釋
=IF(B1<A1,...)
牢房裡的時間B1
已經過了午夜嗎?如果是,則執行下一部分
MOD(B1-A1,1)
傳回MOD(number,divisor)
數字除以除數後的餘數。單元B1
格減去單元格A1
是一個負值,因為單元格中的時間B1
已經過了午夜,並且 Excel 在大多數情況下不喜歡負時間值,因此它會給出#####
沒有MOD()
.排序MOD()
出來了。
該公式的替代方法MOD()
是使用
TIME(23,59,59)-TIME(HOUR(A1),MINUTE(A1),SECOND(A1))+TIME(0,0,1)+B1
這是23:59:59 minus time in cell A1 plus 1 second plus time in cell B1
.
最後一位是單元格時間,B1-A1)
的最後一部分IF()
B1
不是午夜過去了。
答案3
謝謝@Akina,這是唯一對我有用的公式......我嘗試了上面的幾個- 請注意,積極的投票計數- 並得到了可怕的######或一些帶有幾個小數點的負數。考慮了跨越兩天的時間,沒有日期戳記和所有那些胡言亂語...
答案4
要獲得Minutes
兩者之間的差異24Hrs DateTime Stamps
,您可以使用其中一個:
=Int((A2-A1)*24*60)
或者
=int((A2-A1)*1440)
或者
=ROUNDUP((A2-A1)*1440,2)
筆記,公式單元格必須具有General
格式。