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)
我需要计算给定期间(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)