【问题标题】:Excel SUMIFS - define sum_range by dynamically changing columnExcel SUMIFS - 通过动态更改列定义 sum_range
【发布时间】:2020-01-08 15:52:59
【问题描述】:

我想创建一个 SUMIFS 公式,我可以根据这个公式动态更改 sum_range 参数,在该公式中我得到列:SUBSTITUTE(ADDRESS(1;MATCH("aaa";1:1;0);4);1;"")

也就是说,我想把这个公式=SUMIFS(B:B;A:A;"abc")中的B:B替换成上面的公式。但我无法将这些结合起来......

我在这里找到了一种解决方案:https://stackoverflow.com/a/25814571/10452645 但我对它不太满意。是否有另一种可能通过结合 SUMIFS 和 ADDRESS 公式来解决此任务。

【问题讨论】:

  • 为什么不使用IF 语句来更改总和范围,例如=sumifs(if(A1="Yes",A:A,B:B),etc.) 这只是一个示例
  • 您发现的最佳方法是执行此操作。 ADDRESS 和 INDIRECT 是不稳定的,应该避免。 INDEX 是最快最可靠的方法。
  • 如果你想让它不受某些列的限制:=SUMIFS(INDEX($1:$1048576;0;MATCH("aaa";$1:$1;0));A:A;"abc")

标签: excel excel-formula


【解决方案1】:

在上面的示例中,您可以使用以下三个公式之一从 aaa 列中找到 abc 的总和:

=SUMPRODUCT((B2:D13)*(B1:D1="aaa")*(A2:A13="abc"))

=SUMIFS(INDEX(B2:D13,,MATCH("aaa",B1:D1,0)),A2:A13,"abc")

=SUMIFS(INDIRECT(ADDRESS(2,MATCH("aaa",A1:D1,0))&":"&ADDRESS(13,MATCH("aaa",A1:D1,0))),A2:A13,"abc")

您可以将aaaabc 替换为单元格引用,以便“动态”更改SUMIFS 标准。

请注意,正如@ScottCraner 所述

ADDRESS 和 INDIRECT 是不稳定的,应避免使用。 INDEX 是最快最可靠的方法。

易变函数的原因是每次 Excel 重新计算时都会重新计算公式所在的单元格中的公式。无论公式所依赖的先例数据和公式是否已更改,或者公式是否还包含非易失性函数,都会发生这种情况。这意味着如果加班变得复杂,它可能会减慢 Excel 工作簿的计算速度。

话虽如此,请选择适合您偏好的功能。

【讨论】:

  • 我已经测试了所有三个公式。他们都完美地工作。因为我在另一个工作表上有源数据,所以我在最后一个工作中遇到了一些困难。另外,我对INDIRECT 功能不太满意...无论如何,非常感谢@ScottCraner 和@TerryW
猜你喜欢
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多