【问题标题】:Calculate the weighted minutes between two dates in Excel在 Excel 中计算两个日期之间的加权分钟数
【发布时间】:2019-01-14 04:58:51
【问题描述】:

如何使用 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

【问题讨论】:

  • 对于星期六.. [ 00:00-07:00 ] 表中是 8.. 但在您的帖子中。是 10 除以 2.. 为什么?
  • 感谢您的反馈。第一个例子是错误的。现在已经更正了。谢谢!
  • 输入时间怎么样......你的“星期五23:00”和“星期六00:10”数据是日期+时间在一个单元格中还是分开的?
  • 数据是同一单元格中的日期+时间,Excel 将其识别为日期时间。非常感谢!

标签: excel date time duration


【解决方案1】:

为方便起见,将除数列表扩展为:

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

第二批第 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 部分,基于“27-02-2018 21:20:00 at the end time (B13)”案例)

因为是同一天.. 使用 A21 作为开始日期/时间,B21 作为结束日期/时间..

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

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

然后在 C22 使用 =IF(TIME(HOUR(A21),MINUTE(A21),SECOND(A21))&gt;TIME(7,0,0),0,IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))&gt;TIME(7,0,0),7*60-(HOUR(A21)*60+MINUTE(A21)),HOUR(B21)*60+MINUTE(B21))-(HOUR(A21)*60+MINUTE(A21))) 获取 0700 小时前的分钟数

在 D22 使用 =IF(TIME(HOUR(B21),MINUTE(B21),SECOND(B21))&lt;TIME(7,0,0),HOUR(B21)*60+MINUTE(B21)-7*60,HOUR(B21)*60+MINUTE(B21)-(HOUR(A21)*60+MINUTE(A21))) 获取 0700 小时后的分钟数

使用 index/match 函数和在 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) 在 E22 和 F22 处“加载”除数。

并在 G22 和 H22 处使用 =C22/E22=D22/F22 将分钟除以除数。

最后使用=SUM(G22:H22)@H3得到总和

【讨论】:

  • 非常感谢!我尝试并设法根据您的答案填写 Excel。但在我的情况下似乎不起作用。起作用的是映射到除数列表。
  • 例如,我们可以选择这样的示例:开始 Tue 27-02-18 18:20 并结束:Thu 01-03-18 17:04。如果我手动计算,我会根据除法表得到 2804 正常分钟和 1409 分钟。
  • 您需要修改它以“覆盖”中间的天数。既然您现在可以看到我们如何获得“除数”,您只需添加“全天”分钟计算到总和@ G8 ||用您的尝试更新帖子(屏幕截图/示例文件)..分享您卡在哪里,我们将从那里开始..
  • “但在我的情况下似乎不起作用” A6:G8)旨在与您的示例输入相匹配。时间间隔不到半天.由于您的实际情况不同,我可以知道我们正在查看的最大时间差(开始日期/时间和结束/时间之间)是多少? “Tue 27-02-18 18:20 to Thu 01-03-18 17:04”是最大时差吗?
  • 感谢您的持续投入。我很感激。差异:将是 5 天,即 24x60x5 分钟。最好的问候!
猜你喜欢
  • 2017-11-05
  • 2016-08-23
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多