【问题标题】:Excel SUM across sheets: determine row based on current cellExcel SUM 跨工作表:根据当前单元格确定行
【发布时间】:2017-07-07 13:21:08
【问题描述】:

考虑这个公式,它将工作表范围内A6 的单元格内容相加,从RbStartRbEnd

=SUM(RbStart:RbEnd!A6)

有没有办法让A6 动态化,因为它从当前单元格的行中获取行号?原因是我的第一张工作表是一张整合了其他工作表的动态数量的工作表,位于RbStartRbEnd 之间(RbStartRbEnd 只是帮助工作表能够包含动态数字张数。)

第一张纸上的行是动态的。这没关系,因为当您添加其他行时,Excel 会自动更新单元格引用。问题是,由于行生成期间的技术原因,我们之间有空白行,之后将其删除。但是,当您这样做时,Excel 不会更新公式,因此它与汇总的动态工作表不同步。

你可以这样模拟:

  1. 将我的公式放入单元格A6
  2. 向下拖动以进行复制。请注意,在随后的行中,它如何变为 A7A8A9A10 等。
  3. 现在删除第 9 行。请注意第 9 行中的公式如何引用 A10

由于在动态工作表上删除了相同的空白行,它现在引用了错误的行。如果我能以某种方式更改 SUM 公式,而不是 A6 它采用当前单元格所在的行,那么问题将得到解决。

我希望我说得通。很高兴澄清。

【问题讨论】:

标签: excel-formula


【解决方案1】:

我想到的第一件事就是使用下面的公式

=SUM(INDIRECT("'Sheet1:Sheet3'!A"&ROW()))

但后来我意识到INDIRECT 在这里不起作用。

因此,您必须在某处列出所有工作表的名称并在公式中引用该列表。在这里使用命名范围将是一个更好的选择。有关命名范围的详细信息,请参阅this link。然后,您可以根据需要在此列表中添加/删除工作表名称。之后,您可以使用以下公式

=SUMPRODUCT(SUMIF(INDIRECT("'" & NamedRange &"'!A" & ROW()),"<>0"))

或者你可以使用下面的数组公式

=SUM(N(INDIRECT(NamedRange & "!A"&ROW())))

作为一个数组公式,按 Ctrl+Shift+Enter 提交。

您也可以直接使用单元格范围来代替命名范围。假设您在Cell AA1:AA5 中有工作表名称列表,则公式变为

SUMPRODUCT(SUMIF(INDIRECT("'" & $AA$1:$AA$5 &"'!A" & ROW()),"<>0"))

其他选择是使用 VBA。

【讨论】:

  • @RoelVlemmings - 这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
相关资源
最近更新 更多