Excel:计算给定时间段内属于某个类别的项目的公式

Excel: Formula for calculating items belonging to a category in a given period

我需要计算给定期间(C 列中的日期)属于特定项目(定义为 B 列中的文本)的金额(A 列)。

[

我需要的是能够在另一个 sheet 中计算每个月属于每个项目的所有项目的总和。

到目前为止我尝试的是 SUMIFS 函数,公式为:

=SUMIFS('Sheet 1'!A:A,'Sheet 1'!B:B,"*Project 1*",'Sheet 1'!B:B,"*/02/*")

但是带有日期的条件显然不是它应该的样子——因为它变成了 0 值。

SUMPRODUCT 选项

远离 sumifs,您可以使用 SUMPRODUCT。 Sumproduct 使用类似于数组的计算,因此您应该避免在函数中使用完整的列引用,否则您将生成过多的计算。在这种情况下,您的公式将类似于:

=SUMPRODUCT(A1:A3*(B1:B3="Project 1")*(Month(C1:C3)=2)

当 excel 确实评估了 B1:B3="Project 1" 的逻辑检查时,它将生成一个 True 和 False 数组。只要这些 true 和 false 值通过数学运算符发送,它们就会分别转换为 1 和 0。所以对于你的小案例,你会得到类似下面的东西

 100 * True  * True
 200 * False * True
-500 * True  * False

这将转换为

 100 * 1 * 1
 200 * 0 * 1
-500 * 1 * 0

这将转换为

100
  0
  0

sumproduct 执行的最后一步是对列表中的值求和。因此,在您的情况下,您的总数将为 100。

有趣的是,在上面的 sumproduct 公式中,* 相当于 AND。

SUMIFS

如果您希望继续使用 SUMIFS,您可以使用以下内容,以便在需要时提供完整的列引用:

=SUMIFS('Sheet 1'!A:A,'Sheet 1'!B:B,"Project 1",'Sheet 1'!B:B,"<=28/02/18",'Sheet 1'!B:B,">=01/02/18")

编辑:

输入日期范围结束点的替代方法

=SUMIFS('Sheet 1'!A:A,'Sheet 1'!B:B,"Project 1",'Sheet 1'!B:B,"<="&DATE(18,2,28),'Sheet 1'!B:B,">="&DATE(18,2,1))

日期函数为

=DATE(year,month,day)

其中年月日均为整数。

这是一个简单的解决方案,但它确实有效。 还是请大家分享更优雅的方案。

为了处理日期问题,为时间段创建额外的列(我需要月份和年份)

enter image description here

然后公式是(取 2018 年 3 月的所有项目 1 项目):=SUMIFS(A1:A3, B1:B3, "Project 1", D1:D3, 3, E1:E3, 2018)