Excel Scheduling - 嘗試計算午夜後的小時數,以便它們不是負數

Excel Scheduling - 嘗試計算午夜後的小時數,以便它們不是負數

這是我遇到的問題和我正在使用的程式碼的螢幕截圖。

如果有人能給我任何類型的幫助來解釋為什麼我有負數而不是 40,這應該等於,請幫忙。我會非常感激。謝謝你!

答案1

您在「檔案」>「進階」>「計算此工作簿時」部分中正確地為工作簿選擇了「使用 1904 資料系統」(向下捲動至末端)。

這是為了允許時間計算為負數所必需的。 (嘗試將其關閉,您會看到否定變成所有#)

但是,例如在 B16 和 C16 中,時間僅輸入為 18:00 和 01:00,沒有任何日期。 01:00-18:00確實是個負面時間。如果顯示為數字,大約為 -0.71。

解決方案是更改每個單獨的結束-開始時間計算,以適應午夜過後的情況。因此,將“C16-B16”替換為“IF(C16-B16<0,C16-B16+1,C16-B16)”

您需要一周中的每一天都這樣做,這使得公式相當長。

考慮在幾天之間新增一個額外的列,以顯示當天的工作時間。然後總計只需將這些儲存格相加即可。

編輯:被打敗了!

再次編輯:您應該像我的範例中那樣使用+1,而不是上一篇文章中的+24,因為單位是天,而不是小時。

最終編輯:一個更短的解決方案是將“C16-B16”替換為“MOD(C16-B16,1)”。這是透過僅保留時間的小數部分來實現的。對於時間,小數點 1 表示 24 小時。

答案2

超過 24 的通常公式是:

 =EndTime - StartTime +(EndTime < StartTime)

將所有這些合併到一個公式中,對一周中的所有日子進行求和,雖然很尷尬,但可行。它需要一個數組輸入的公式,因為您需要單獨測試每一對。

下面的公式利用了您的設置,因為您的所有結束時間都位於偶數列中;開始時間位於奇數列。

請注意,兩個構造的陣列相差一列。在 Excel 2007+ 版本中,您可以使用 ISODD/ISEVEN 函數直接測試 ODD/EVEN。

這個公式必須是數組輸入:

=SUM(
MOD(COLUMN($C16:$O16),2)*$C16:$O16-
(MOD(COLUMN($B16:$N16),2)=0)*$B16:$N16+
((MOD(COLUMN($C16:$O16),2)*$C16:$O16-(MOD(COLUMN($B16:$N16),2)=0)*$B16:$N16)<0))
*24

或者,使用 ISODD 和 ISEVEN:

=SUM(
ISODD(COLUMN($C16:$O16))*$C16:$O16-
ISEVEN(COLUMN($B16:$N16))*$B16:$N16+
((ISODD(COLUMN($C16:$O16))*$C16:$O16-ISEVEN(COLUMN($B16:$N16))*$B16:$N16)<0))
*24

或者,甚至更短,但更難理解,因為我們使用 MOD 函數僅保留小數部分:

=SUM(
     MOD(
         ISODD(COLUMN($C16:$O16))*$C16:$O16-
         ISEVEN(COLUMN($B16:$N16))*$B16:$N16,
     1))
*24

數組輸入公式,將公式輸入儲存格或編輯欄後,按住 Ctrl-Shift擊球時進入。如果您的運算正確,Excel 會在公式兩邊放置大括號 {...}。

我已經為您在螢幕截圖中顯示的行編寫了公式。使用您的數字得出的結果是 37.9833

答案3

你的問題是當你過了午夜。以周五、週六和週日的第一排為例。每天的結束時間是凌晨 2:00。例如,在星期五,當您減去時間時,星期五下午 6:00 減去下午 6:00 PM 之前的星期五凌晨 2:00。

為了避免負面影響,但仍保持圖表的良好視覺外觀,您應該使用 IF 語句。計算週五使用情況:

=IF(K3 < J3, K3 - J3 + 24, K3 - J3)

IF 語句分為三個部分。

(一)條件

K3 < J3

這會檢查 K3(結束時間)是否小於 J3(開始時間)。如果是這樣,它將傳回一個負數(時間 2:00 AM “小於”6:00 PM)。

(2) 若條件為真

K3 - J3 + 24

如果條件為真,Excel 將使用此方程式。我編寫它是為了添加 24 以抵消可能發生的任何負面影響。

(3) 若條件為假

K3 - J3

如果條件為真,Excel 將使用此方程式。

概括

使用提供的 IF 語句代替您用來計算每天的小時數的方程式。

答案4

我在計算時間時遇到了類似的問題,有時會超過午夜,但沒有日期或日期資訊。我的開始時間是在晚上,有時會延續到第二天,所以我結合了幾個公式來使其適合我:

=IF(D4< C4,TEXT(D4-C4+24,"h:mm"),TEXT(D4-C4,"h:mm"))

(請注意,由於某些格式原因,我被迫在小於符號後面添加一個空格 - 我沒有在公式中使用空格)

這是一個簡單的 if,在我的例子中,D4 是結束時間,C4 是開始時間。如果結束時間早於開始時間,則它必須在午夜過後結束。中間的語句給出了經過午夜 (+24) 校正後的總作業時間。如果您只需要定期減法,那麼最後會顯示工作時間。我發現如果沒有“TEXT”和時間格式,+24 數學將顯示為十進制值。

相關內容