Excel:用于计算属于给定时间段中的类别的项目的公式

时间:2018-03-01 10:53:43

标签: excel excel-formula multiple-conditions

我需要在给定时间段(C列中的日期)中对属于特定项目(在B列中定义为文本)的金额(A列)求和。

[Let's say that's the example:

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

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

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

但是具有日期的条件显然不是它应该的方式 - 因为它变为0值。

2 个答案:

答案 0 :(得分:0)

SUMPRODUCT OPTION

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

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

当excel评估B1:B3 =“Project 1”的逻辑检查时,它将生成一个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)

年,月,日都是整数。

POC

答案 1 :(得分:0)

这是一个简单的解决方案,但它有效。 我仍然邀请您分享您更优雅的解决方案。

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

enter image description here

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