Ale*_*win 5 excel worksheet-function
假设我在A1到A20中有数字,我想在A列中将5个单元格的非重叠范围相加并将结果存储在E列的单元格中,它看起来像这样(如果公式被输入到每个E列单元格中)手动地):
E1 = SUM(A1:A5)
E2 = SUM(A6:A10)
E3 = SUM(A11:A15)
E4 = SUM(A16:A20)
Run Code Online (Sandbox Code Playgroud)
但是,我不想手动将公式键入E单元格.我希望能够在E1中选择公式并将其向下拖动到E4,同时保持A中5个单元格的非重叠范围!Excel默认情况下不会给我这种行为,而是这样做:
E1 = SUM(A1:A5)
E2 = SUM(A2:A6)
E2 = SUM(A3:A7)
E4 = SUM(A4:A8)
Run Code Online (Sandbox Code Playgroud)
看看每个SUM()函数中5个单元格的范围是如何重叠的?例如A1:A5和A2:A6.那不是我想要的.
那么,什么是能让我这样做的公式呢?基本上,下面的伪代码可以工作,但我似乎无法在Excel中实现类似的东西:
SUM(CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 1):CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 5))
Run Code Online (Sandbox Code Playgroud)
例如,对于E2,CURRENT_ROW = 2,意味着它看起来像这样:
SUM(CELL(A, (2 - 1) * 5 + 1):CELL(A, (2 - 1) * 5 + 5))
= SUM(CELL(A, 6):CELL(A, 10))
Run Code Online (Sandbox Code Playgroud)
此伪代码假定CELL具有方法签名CELL(行,列).
其中的关键是 OFFSET 函数。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))
Run Code Online (Sandbox Code Playgroud)
它的作用是:对由以下定义的范围求和: 一个单元格块,从 (A1 * 5) 个单元格向下开始,从 $D$1 穿过 0 个单元格,其高度为 5,宽度为 1。请参阅编辑,我将其保留,因为您可以在 A 单元格中放入任意数字并使用此原理。
希望这有某种意义吗?Excel 不适合文本解释!
编辑:删除单元格 A1...,记住 ROW() 允许自引用,这意味着您可以执行以下操作
=SUM(OFFSET(D$1,(ROW(B1)-1)*5,0,5,1))
Run Code Online (Sandbox Code Playgroud)
此公式位于单元格 B1 中(粘贴下来),并且您的数据位于 D 列中,从 1 开始。
| 归档时间: |
|
| 查看次数: |
8738 次 |
| 最近记录: |