Excel使用年份在自定义date范围之间总计金额

工作表的图片

我正在尝试为单元格B2:G2开发一个公式,它将查看单元格B1:G1中的会计年度,并根据单元格F8:f11中的开始date和结束date对B8:B31中的信息进行求和。 我已经尝试了sumifs,sumproduct等,但还没有能够得到任何工作。 我完全卡住了。 有没有人有任何build议的公式或更好的方式来布置表? 单元格B2和C2中显示了如果正确计算出现的答案,以供参考。

把这些在B2中,并复制:

非CSE数组公式:

=SUMPRODUCT((DATE(B$1-1,7,1)<=$A$7:$A$31)*(DATE(B$1,6,30)>=$A$7:$A$31)*$B$7:$B$31) 

要么:

 =SUM(INDEX((DATE(B$1-1,7,1)<=$A$7:$A$31)*(DATE(B$1,6,30)>=$A$7:$A$31)*$B$7:$B$31,)) 

Ctrl-Shift-Enter公式:

 =SUM(IF((DATE(B$1-1,7,1)<=$A$7:$A$31)*(DATE(B$1,6,30)>=$A$7:$A$31),$B$7:$B$31)) 

这在退出编辑模式时需要用Ctrl-Shift-Enter确认。 如果做得好,Excel将在公式周围放置{}

以上都是数组公式,当使用数组公式时,计算是指数的,所以引用不应该是满列或者延伸过去数据集。

为了做到这一点,我们使用和INDEX / MATCH来查找和设置数据INDEX($A:$A,MATCH(1E+99,$A:$A))的最后一行

所以要引用从A7到数据的最后一个单元格的所有数据,我们将设置如下范围: $A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)) In这个例子是$ A $ 7:$ A $ 31。

所以上面三个公式就是这样的:

 =SUMPRODUCT((DATE(B$1-1,7,1)<=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)))*(DATE(B$1,6,30)>=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)))*$B$7:INDEX($B:$B,MATCH(1E+99,$A:$A))) 

 =SUM(INDEX((DATE(B$1-1,7,1)<=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)))*(DATE(B$1,6,30)>=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)))*$B$7:INDEX($B:$B,MATCH(1E+99,$A:$A)),)) 

 =SUM(IF((DATE(B$1-1,7,1)<=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A)))*(DATE(B$1,6,30)>=$A$7:INDEX($A:$A,MATCH(1E+99,$A:$A))),$B$7:INDEX($B:$B,MATCH(1E+99,$A:$A)))) 

最后一个使用Ctrl-Shift-Enter。


或者你可以简单地使用这个非数组公式SUMIFS()

 =SUMIFS($B$7:$B$1000000,$A$7:$A$1000000,">=" & DATE(B$1-1,7,1),$A$7:$A$1000000,"<=" & DATE(B$1,6,30)) 

这个公式没有数组公式的限制,所以我们可以引用尽可能多的行。

![在这里输入图片描述