根据Excel中的日期汇总数据

时间:2009-05-04 08:41:32

标签: excel sum

我的问题如下......

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

现在这就是问题......在C栏我需要记录过去7天的小时数。任何给定的7天,而不仅仅是上周。手动完成很容易......问题是我需要一个公式,因为我的记录很大......

这里有一个小例子(假设在2009年1月15日之前没有小时)......

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

日期--------------小时-------最后7天

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

15/01/2009 02:15 ------- ------- 3点15分

16/01/2009 ------- ------- 1点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

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

由于

3 个答案:

答案 0 :(得分:1)

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

=Now() - 7

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

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

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

如果您计划将数字数据置于输入范围之上或之下,则需要明确调出总和和条件范围,如下所示:

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

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

希望有所帮助!

[编辑:在第二次通过时,如果您想要根据来自和迄今为止的范围求和(所以任何7天似乎暗示您的帖子),请查找上一张海报的注释,即:

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

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

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

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

快乐总结!]

答案 1 :(得分:1)

另一种解决方案与早期提供的解决方案基本相同:

在C1中,输入以下公式:

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

然后将公式拖下来。

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

答案 2 :(得分: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 of named ranges conditional to date?。 我们的想法是首先计算总和: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函数,它“添加由给定条件指定的单元格。”