計算可跨越兩天的時間持續時間的公式

計算可跨越兩天的時間持續時間的公式

A:24 小時格式的開始時間(使用公式並以+ +=NOW()鎖定) 列:24 小時格式的結束時間(輸入與列相同) 列:持續時間,格式為,使用公式CtrlSHIFT;
BA
C[mm]=B1-A1

B如果列中的資料包含第二天發生的時間,如何計算持續時間?


實際工作表:

實際工作截圖

答案1

可能最優雅和最簡單的解決方案是這個答案Fixer1234 在中提到這則評論

=MOD(B1-A1,1)

請注意,它假設兩個值都只是時間值(或日期部分將被截斷),即每個值都小於 1,且持續時間小於 24 小時。

解釋:

這是有效的,因為對於串列日期時間值,1 對應於 24 小時,而僅時間值是小於 1 的日期時間值。

  • 如果B1 >= A1那麼MOD(B1-A1,1)B1-A1如預期的
  • 如果B1 < A1thenMOD(B1-A1,1)相當於1-(A1-B1)(since MOD(-n,m)=m-MOD(n,m)) 給予正確的「補」持續時間


另一種解決方案(您判斷它是否更簡單/更優雅;-))是:

=(B1<A1)+B1-A1

解釋:

這是有效的,因為在算術運算中使用時,TRUE值被隱式強制轉換為 a 1FALSE值被強制轉換為 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格式。

相關內容