1

我的问题是以下...

我有一架小飞机,我需要跟踪时间。我必须按部门而不是一天的总数来跟踪时间(这就是为什么有时我在同一天有 2 或 3 个)。

现在这就是问题所在...在 CI 列上需要对过去 7 天的小时数求和。任何给定的 7 天,而不仅仅是上周。手动操作很容易......问题是我需要一个公式,因为我的记录很大......

这里有一个小例子(假设在 15/01/2009 之前没有 HOURS)...

A栏-------B栏-----C栏

日期--------------小时--------小时过去 7 天

15/01/2009--------01:00--------01:00

15/01/2009--------02:15--------03:15

16/01/2009--------01:15--------04:30

17/01/2009--------01:30--------06:00

18/01/2009--------01:30--------07:30

18/01/2009--------01:00--------08:30

18/01/2009--------02:00--------10:30

19/01/2009--------02:30--------13:00

19/01/2009--------03:00--------16:00

20/01/2009-------///////--------16:00

21/01/2009--------01:00--------17:00

22/01/2009--------01:30--------15:15

23/01/2009--------02:00--------16:00

过去几周我一直在努力找出一个公式,但没有运气......有什么建议吗?

谢谢

4

3 回答 3

1

首先是获取开始日期,这将是以下函数:

=Now() - 7

如果您将该单元格重命名为“WeekBegin”,则可以使用以下公式计算总小时数:

=SUMIF(A:A,">=" & WeekBegin,B:B)

请注意,我使用了列引用;这既是为了简化公式,也是为了让您可以轻松地将新数据添加到范围的末尾。您需要注意您的 WeekBegin 单元格不在该列 A 或 B 列中,否则您将收到循环引用警告。

如果您计划将数值数据置于输入范围之上或之下,则需要显式调用总和和条件范围,如下所示:

=SUMIF(A2:A14,">=" & WeekBegin,B2:B14)

此外,您可能会发现您的结果最初以小数形式出现。这是 Excel 的日期序列格式,因此您可能需要将结果格式化为时间。

希望有帮助!

[编辑:在第二次通过时,如果您要根据从和到日期对范围求和(因此您似乎在帖子中暗示的任何 7 天),请查找上一张海报的注释,即:

=SUM(B:B) - SUMIF(A:A, "<="& BeginDate, B:B) - SUMIF(A:A, ">"& EndDate, B:B) 

Excel 2007 中使用 SumIFS() 函数提供了一个更优雅的解决方案:

=SUMIFS(B:B, A:A, ">=" & FromDate,A:A, "<" & ToDate)

请注意,SUMIFS 的参数与标准 SUMIF 的顺序不同。

总结快乐!]

于 2009-05-04T15:27:25.770 回答
1

另一个与之前提供的解决方案基本相同的解决方案:

在 C1 中,输入以下公式:

{=SUM(IF(($A$1:$A1>=($A1-6))*($A$1:$A1<=$A1), $B$1:$B1, 0))}

然后将公式向下拖动。

如果您不熟悉数组公式,{} 外括号仅表示该公式是数组公式。要使其正确执行,您需要将 {} 括号内的部分复制到公式栏中,然后按 Ctrl+Shift+Enter 表示它是一个数组公式。

于 2009-05-05T03:09:37.097 回答
0

如果有人想尝试,这里是格式更好的数据:

15-Jan-2009 01:00
15-Jan-2009 02:15
16-Jan-2009 01:15
17-Jan-2009 01:30
18-Jan-2009 01:30
18-Jan-2009 01:10
18-Jan-2009 02:00
19-Jan-2009 02:30
19-Jan-2009 03:00
20-Jan-2009 
21-Jan-2009 01:00
22-Jan-2009 01:30
23-Jan-2009 02:00

我得到了这个功能:

=SUM($B$1:$B$13)-SUMIF($A$1:$A$13, "<="& (A1- 7), $B$1:$B$13) - SUMIF($A$1:$A$13, ">"& (A1), $B$1:$B$13)

这是基于迄今为止有条件的命名范围的总和?. 这个想法是首先计算总和: SUM($B$1:$B$13)

然后减去 7 天前发生的任何值:SUMIF($A$1:$A$13, "<="& (A1- 7), $B$1:$B$13)

然后减去将来发生的任何值:SUMIF($A$1:$A$13, ">"& (A1), $B$1:$B$13)

关键是使用SUMIF函数,它“添加由给定条件指定的单元格”。

于 2009-05-04T08:52:21.040 回答