使用两个数组创建动态 SumProduct 函数

Creating a Dynamic SumProduct Function with Two Arrays

我正在尝试将 excel 中的偏移函数与 sumproduct 结合使用,因为我想获取两个数组并根据指定的起点和长度将它们相乘。例如:

1 2 3 4 5 6 7 8 9

2 4 6 8 10 12 14 16

如果我从 4 和 8 开始并选择返回 3 列,然后对指定范围内的行数组进行乘法和求和:即 1,2 到 4,8。 1*2 2*4 3*6 4*8 期望的结果是 (2+8+18+32) = 60

Offset、sumproduct 组合失败。我看过 counta 的索引,但它似乎不是解决方案

见上文

无法使 table 工作。非常感谢任何帮助,以便在指定范围为 2 而不是 3 等的情况下,此过程可以是动态的。谢谢!

第一行从 A2 开始。第二行从 B2 开始。

C6 中的起始列(实际上是结束列)。要包含在 C7 中的列数。

=SUMPRODUCT(OFFSET(A2,0,C6-C7,1,C7)*OFFSET(A2,1,C6-C7,1,C7))

第一个偏移量表示

  • 从 A2 开始
  • 移动零行
  • 移动零列。在 C6 中有一个 4(要包括的最后一列),在 C7 中有一个四(要包括的列总数)。将 C7 更改为“2”以仅求和 3*6 和 4*8。
  • 调整为 1 行
  • 调整为 4 列

使用 Sumproduct 和 Column 的几个替代方案:

=SUMPRODUCT(A2:H2*A3:H3*(COLUMN(A2:H2)>=C6-C7)*(COLUMN(A2:H2)<=C6))

或使用索引:

=SUMPRODUCT(INDEX(A2:H2,C6-C7):INDEX(A2:H2,C6),INDEX(A3:H3,C6-C7):INDEX(A3:H3,C6))

如果输入是 数组 而不是像这样的范围呢?

column(A:H)

column(A:H)*2

None 以前的方法都可以,但你可以这样做

=SUM(INDEX(COLUMN(A:H),N(IF({1},ROW(INDEX(A:A,C6-C7):INDEX(A:A,C6)))))
*INDEX(COLUMN(A:H)*2,N(IF({1},ROW(INDEX(A:A,C6-C7):INDEX(A:A,C6))))))

使用 CtrlShiftEnter

作为数组公式输入