来自不同表的Excel SUM COUNTIFS以及将来的

时间:2018-01-23 22:16:26

标签: excel-formula countif

我练习MS Excel技能。我有一个工作簿,我想在其中分析来自不同表格的数据。

每个工作表都包含一个包含年份信息的表格。所以在工作表" 2017"我有一张名为" Table2017"的表。我每年都有这个(从2015年开始)。

经过一番研究,我终于找到了一种计算某个地方某事发生次数的方法。

=SUM(COUNTIFS(Table2018[Place];B3;Table2018[Activity];{"Paid";"Awarded"}))
+SUM(COUNTIFS(Table2017[Place];B3;Table2017[Activity];{"Paid";"Awarded"}))
+SUM(COUNTIFS(Table2016[Place];B3;Table2016[Activity];{"Paid";"Awarded"}))
+SUM(COUNTIFS(Table2015[Place];B3;Table2015[Activity];{"Paid";"Awarded"}))

这完美无缺。它将计算每个地方有多少次付费服务或授予(有天赋/赞助)服务。在B列中,我有一个位置列表(因此是B3参考),因此在完成公式后,我可以选择单元格并放大/拖动以将其复制到列的其余部分并应用于每个位置。

但是,公式非常长,每年创建一个新的工作表时,我需要在公式中添加一个新的部分。

有没有办法压缩这个?理想情况下,公式搜索每个具有相关信息的表(如:"表20 ??"或"表20 *"),进入并计算我的条件的时间找到了?

我希望我的问题很清楚。

提前致谢!

P.S。我没有VBA / VBS的经验,所以我希望在正常的公式中实现这一点。

1 个答案:

答案 0 :(得分:0)

有一些方法可以使它更紧凑,但它们必然会使功能更复杂,所以它不会轻易获胜。你自己看: 你基本上需要能够在公式内循环多年而不创建自定义公式。一种方法是在INDIRECT函数中使用ROW。这样你可以替换多个

Table2015[Place]

包含一个包含

的数组函数
INDIRECT("Table"&ROW($A$2015:$A$2018)&"[Place]")

因为它是一个数组函数,它将基本上循环通过ROW函数中的单元格创建Table2015 [Place],Table2016 [Place],Table2017 [Place]和Table2018 [Place]。你的整个公式看起来像这样

 =SUM(COUNTIFS(INDIRECT("Table"&ROW($A$2015:$A$2018)&"[Place]");B3;INDIRECT("Table"&ROW($A$2015:$A$2018)&"[Activity]");{"Paid";"Awarded"}))

并且必须使用ctrl + shift + enter输入(您将看到函数周围的{}括号)。这应该可以使函数变小,你只需要每年更改单元格引用而不是添加另一个和,但问题是单独的和是否更容易阅读和维护。