簡體   English   中英

在Excel中計算兩個日期之間的加權分鍾

[英]Calculate the weighted minutes between two dates in Excel

如何使用Excel計算兩個日期之間的加權分鍾?

分鍾數必須如下表所示。

例如,如果開始日期是星期五的23:00,結束日期是星期六的00:10,則結果應為:

60 minutes from Friday 23:00 to Saturday 00:00
10/8 = 1.25 minutes from Saturday 00:00 to Saturday 00:10
Total: 61.25 minutes

除法矩陣

為方便起見,請將除數列表擴展為:

Interval        1   2   3   4   5   6   7
0700 - 0000     1   1   1   1   1   2   5
0000 -0700      4   4   4   4   4   8   16

假設您在A1:H3單元格中構建了表格,請貼上以下標簽:

A6 ---> start time
A7 ---> end time
C5 ---> day
D5 ---> total minutes
E5 ---> before 0700 (2) or after (1)
F5 ---> devide by
G5 ---> calc
H8 ---> Sum

其中B6是您的開始時間值,而B7是您的結束時間值。

輸入以下公式(並觀察其工作原理):

C6 ---> =WEEKDAY(B6,2)
D6 ---> =24*60-HOUR(B6)*60-MINUTE(B6)
E6 ---> =IF(TIME(HOUR(B6),MINUTE(B6),SECOND(B6))>TIME(7,0,0),1,2)
F6 ---> =INDEX($B$2:$H$3,E6,MATCH(C6,$B$1:$H$1,0))
G6 ---> =D6/F6

並將其拖動到C7:G7。 除了

D7 ---> =(HOUR(B7))*60+MINUTE(B7)
G8 ---> =SUM(G6:G7)

它行得通嗎? 如果您陷於理解公式中,請分享。


編輯(第2部分,基於注釋+第3部分,重新​​創建新的示例文件后)

花點時間來了解所使用的序列/ excelFunction ...我已經將公式/鍵入序列嵌入為我想分享的“策略”的一部分。

假設開始日期/時間在A13中,而結束日期在B13中,則在這些標簽上貼上:

A12  ---->  start time
B12  ---->  end time
C12  ---->  dayNo
D12  ---->  dateEachDay
E12  ---->  before 7
F12  ---->  after 7
G12  ---->  divisor before 7
H12  ---->  divisor after 7
I12  ---->  sub total
A15  ---->  dateForEquation
C18  ---->  last day :
K19  ---->  Sum

和這個值:

C13 ----> 1

首批公式(從日期/時間數據中獲取僅日期數據):

A16  ---->  =DATE(YEAR(A13),MONTH(A13),DAY(A13))
B16  ---->  =DATE(YEAR(B13),MONTH(B13),DAY(B13))

C13  ---->  1
D13  ---->  =A16
D18  ---->  =B16

第2部分第1部分(第1天第n天的分鍾數):

E13  ---->  =IF(TIME(HOUR(A13),MINUTE(A13),SECOND(A13))<TIME(7,0,0),7*60-HOUR(A13)*60-MINUTE(A13),0)
F13  ---->  =IF(TIME(HOUR(A13),MINUTE(A13),SECOND(A13))>=TIME(7,0,0),24*60-HOUR(A13)*60-MINUTE(A13),24*60-7*60)
E18  ---->  =IF(TIME(HOUR(B13),MINUTE(B13),SECOND(B13))<TIME(7,0,0),HOUR(B13)*60-MINUTE(B13),7*60)
F18 ---->  =IF(TIME(HOUR(B13),MINUTE(B13),SECOND(B13))>TIME(7,0,0),HOUR(B13)*60+MINUTE(B13)-420,0)

第二批第2部分(全天之間的分鍾數),需要拖動到F17:

C14  ---->  =IF(D14="",0,7*60)
D14  ---->  =IF(D14="",0,17*60)
E14  ---->  =IFERROR(INDEX($B$3:$H$3,MATCH(WEEKDAY($D14,2),$B$1:$H$1,0)),1)
F14  ---->  =IFERROR(INDEX($B$2:$H$2,MATCH(WEEKDAY($D14,2),$B$1:$H$1,0)),1)

第三批,(使用index()n match()獲得各自的除數+ calc)拖動到J18:

G13  ---->  =IFERROR(INDEX($B$3:$H$3,MATCH(WEEKDAY($D13,2),$B$1:$H$1,0)),1)
H13  ---->  =IFERROR(INDEX($B$2:$H$2,MATCH(WEEKDAY($D13,2),$B$1:$H$1,0)),1)
I13  ---->  =E13/G13
J13  ---->  =F13/H13

最后..

J19  ---->  =SUM(I13:J18)

如果您對理解它有所了解,就嗡嗡作響。。但是請幫助我仔細檢查(手動計算?)..(:


編輯(第3部分,基於“結束時間(B13)在27-02-2018 21:20:00”的情況)

由於是同一天。.使用A21作為開始日期/時間,並使用B21作為結束日期/時間..

在A22,使用=DATE(YEAR(A21),MONTH(A21),DAY(A21))提取日期。

在B22,使用WEEKDAY(A22,2)獲取日期的工作日...

然后在C22使用=IF(TIME(HOUR(A21),MINUTE(A21),SECOND(A21))>TIME(7,0,0),0,IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))>TIME(7,0,0),7*60-(HOUR(A21)*60+MINUTE(A21)),HOUR(B21)*60+MINUTE(B21))-(HOUR(A21)*60+MINUTE(A21)))獲得0700小時之前的分鍾=IF(TIME(HOUR(A21),MINUTE(A21),SECOND(A21))>TIME(7,0,0),0,IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))>TIME(7,0,0),7*60-(HOUR(A21)*60+MINUTE(A21)),HOUR(B21)*60+MINUTE(B21))-(HOUR(A21)*60+MINUTE(A21)))

在D22處,使用=IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))<TIME(7,0,0),HOUR(B21)*60+MINUTE(B21)-7*60,HOUR(B21)*60+MINUTE(B21)-(HOUR(A21)*60+MINUTE(A21)))獲得0700小時后的分鍾數=IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))<TIME(7,0,0),HOUR(B21)*60+MINUTE(B21)-7*60,HOUR(B21)*60+MINUTE(B21)-(HOUR(A21)*60+MINUTE(A21)))

使用索引/匹配函數,以及在B22定義的工作日,使用=IFERROR(INDEX($B$3:$H$3,MATCH(WEEKDAY($A22,2),$B$1:$H$1,0)),1)=IFERROR(INDEX($B$2:$H$2,MATCH(WEEKDAY($A22,2),$B$1:$H$1,0)),1)

並使用G22和H22處的=C22/E22=D22/F22將分鍾除以其除數。

最終使用=SUM(G22:H22) @ H3獲得總和

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM