2

我正在尝试将 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

抵消,sumproduct 组合没有成功。我已经用 counta 看到过索引,但它似乎不是解决方案

看上面

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

4

2 回答 2

1

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

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

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

第一个偏移量说

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

和积公式

于 2019-08-11T12:36:20.083 回答
0

使用 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

以前的方法都不起作用,但你可以做这样的事情

=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

于 2019-08-11T16:23:48.890 回答