SUMPRODUCT 与 INDIRECT

SUMPRODUCT with INDIRECT

我已经检查了与该主题相关的所有问题,但 none 有帮助。

我有这个公式

=SUMPRODUCT((INDIRECT("Ap"&ROW()&":"&"Ap"&(ROW()+$T4-1)));(INDIRECT("Ap"&ROW()&":"&"Ap"&(ROW()+$T4-1))))

这导致 - 0。

=SUMPRODUCT((INDIRECT("Ap"&ROW()&":"&"Ap"&(ROW()+$T4-1)))*(INDIRECT("Ap"&ROW()&":"&"Ap"&(ROW()+$T4-1))))

这导致 - “VALUE!

使用 SUM 命令一切正常,但我现在坚持使用它。我使用的是 Microsoft Office 2013,我似乎无法找出这个 INDIRECT 函数的问题,因为它可以很好地与其他命令一起使用。

例如,如果我在第 A 列的前 5 行中有从 1 到 5 的数字,并且在第 B 列中有相同的数字,我将公式放在 C1

=SUMPRODUCT((INDIRECT("A"&ROW()&":"&"A"&(ROW()+4)))*(INDIRECT("B"&ROW()&":"&"B"&(ROW()+4))))

结果与原始示例相同。

将您的示例与 A 列和 B 列以及 this answer on a similar question 中的数据一起使用,ROW() 函数 returns 一个数组,而不是单个值。将它包装在 sum() 中解决了这个问题。

=SUMPRODUCT(INDIRECT("A"&SUM(ROW())&":"&"A"&SUM((ROW()+4))),INDIRECT("B"&SUM(ROW())&":"&"B"&SUM((ROW()+4))))

老实说,您使用的结构很差。不仅不合格的 ROW() 是一个非常不严谨的选择,而且在这种类型的设置中几乎总是可以避免易变的 INDIRECT 结构。

更好的是:

=SUMPRODUCT(INDEX(A:A,ROWS(:1)):INDEX(A:A,ROWS(:1)+4),INDEX(B:B,ROWS(:1)):INDEX(B:B,ROWS(:1)+4))

有关使用 ROWS 而不是 ROW 的优势的讨论,请参阅此处:

http://excelxor.com/2014/08/25/row-vs-rows-for-consecutive-integer-generation/

此致