【问题标题】:Excel formula to sum non-overlapping ranges of cells?Excel公式求和不重叠的单元格范围?
【发布时间】:2010-12-19 12:43:55
【问题描述】:

假设我在 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)。

【问题讨论】:

    标签: excel worksheet-function


    【解决方案1】:

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

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

    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,$D$1 是 5 高 x 1 宽。请参阅编辑,我将其保留,因为您可以在 A 单元格中输入任意数字并使用此原理。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      =SUM(OFFSET(A1,ROW(A1)*4-4,0,5,1))
      

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        相关资源
        最近更新 更多