5

假设我在 A1 到 A20 中有数字,我想对 A 列中 5 个单元格的非重叠范围求和,并将结果存储在 E 列的单元格中,它看起来像这样(如果在每个 E 列单元格中输入公式手动):

E1 = SUM(A1:A5)
E2 = SUM(A6:A10)
E3 = SUM(A11:A15)
E4 = SUM(A16:A20)

但是,我不想手动将公式键入 E 单元格。我希望能够在 E1 中选择公式并将其向下拖动到 E4,同时保持 A 中 5 个单元格的非重叠范围!Excel 默认情况下不会给我这种行为,而是这样做:

E1 = SUM(A1:A5)
E2 = SUM(A2:A6)
E2 = SUM(A3:A7)
E4 = SUM(A4:A8)

看看每个 SUM() 函数中 5 个单元格的范围如何重叠?例如 A1:A5 和 A2:A6。那不是我想要的。

那么,让我能够做到这一点的公式是什么?基本上,以下伪代码可以工作,但我似乎无法在 Excel 中实现类似的东西:

SUM(CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 1):CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 5))

例如,对于 E2,CURRENT_ROW = 2,这意味着它看起来像这样:

SUM(CELL(A, (2 - 1) * 5 + 1):CELL(A, (2 - 1) * 5 + 5))
= SUM(CELL(A, 6):CELL(A, 10))

此伪代码假定 CELL 具有方法签名 CELL(row, column)。

4

2 回答 2

2

关键是偏移功能。偏移量需要一个起始单元格,以及一些行、列以及可选的高度和宽度,以动态生成对单元格/范围的引用。诀窍是使用其他函数来生成行偏移量和其他参数。

我刚刚拼凑了一些似乎可以满足您要求的东西,我会看看是否可以解释一下...

A 列:整数 (A1) 0, (A2) 1, (A3) 2,3,4,5 等...这是您抵消多少的索引,您可以使用类似ROW 函数)D 列(或任何其他任意位置):您想要求和的数字,从 D1 开始 - 我实际上只是使用 (D1) 1, (D2) 2,3,4,5...

B列是您感兴趣的列,公式为:

=SUM(OFFSET(D$1,A1*5,0,5,1))

它在做什么:对由以下定义的范围求和:一个单元格块,从 (A1 * 5) 个单元格开始向下,从 $D$1 开始为 0,它是 5 高 x 1 宽。请参阅编辑,我将其保留,因为您可以在 A 单元格中输入任意数字并使用此原理。

希望这有某种意义?Excel 不适合文本解释!

编辑:删除单元格 A1...,记住 ROW() 允许自引用,这意味着你可以这样做

 =SUM(OFFSET(D$1,(ROW(B1)-1)*5,0,5,1))

此公式位于单元格 B1 中(已粘贴),您的数据位于 D 列中,从 1 开始。

于 2010-12-19T12:56:58.767 回答
2

当输入单元格 E1 并向下填充到 E2、E3 等时,此公式将得到正确的结果......

=SUM(OFFSET(A1,ROW(A1)*4-4,0,5,1))
于 2010-12-19T14:00:58.370 回答