【问题标题】:Sum a list of indirect ranges from a dynamic range汇总来自动态范围的间接范围列表
【发布时间】:2026-02-08 23:15:02
【问题描述】:

我在一列中有一个范围列表。范围是动态命名范围的一部分,采用文本格式。

$A$1:$A$5
$A$6:$A$10
$A$11:$A$15
...

目的是SUM动态范围中每个范围之间的值,因为调用动态范围应该遍历所有范围。但是,与=SUM(INDIRECT(<dynamic_range>) 无关。此公式仅返回一个与动态范围中的第一个范围不对应的值。

例如,返回第一个范围的总和,然后在下一行,返回第二个范围的总和,依此类推,直到动态范围结束。

我试图将其保留为公式而不是 VBA。

【问题讨论】:

  • SUM() 将始终返回一个值。你能解释一下你想要做什么吗?
  • 此外,如果范围与结果在同一张表中,则不需要 INDIRECT(易失性),但您可以改用 INDEX。
  • @Harun24HR 目的是根据动态范围内的范围对 A 列中的值求和。基本上,通过动态范围返回第一个范围的总和,第二个范围的总和,依此类推。
  • @P.b 我将如何使用 INDEX 来解决这个问题?
  • @Henry 您的命名范围是静态的吗?即第一个范围总是 $A$1:$A$5 吗?还有 3 个范围名称是什么?

标签: excel excel-formula


【解决方案1】:

在 Office 365 中将 SUMIF 而不是 SUM 与动态数组公式结合使用会溢出总和:

=SUMIF(INDIRECT(rng),"<>")

【讨论】:

    【解决方案2】:

    避免不稳定的间接,您可以使用: =SUM(INDEX($A:$A,SEQUENCE(5,,ROW()*5)-4)) 如果你有 office365 或=SUM(INDEX(A:A,ROWS($1:1)*5-4):INDEX(A:A,ROWS($1:1)*5)) 对于旧版本。

    PS 这是假设范围的变化是每次 5 个单元格的相同步骤。

    【讨论】: