如何使用 SUM() 在 Excel 中创建小计?

如何使用 SUM() 在 Excel 中创建小计?

我已经很久没有使用过 Excel 了,现在我需要一些关于复制公式的帮助。

这是对我正在尝试做的事情的简化解释:

A1:365其中有每日销售数据。

在BI列中,需要计算每周的销售额,因此B1中的公式是=SUM(A1:A7)

如果我复制公式,B2 会变成=SUM(A2:A8),但我希望它说=SUM(A8:A14)

可以做到这一点而不需要重新输入 52 次公式吗?

答案1

正如前面提到的,INDIRECT()这是一个选项。另一个是OFFSET()...

因此 B1 就变成

=SUM(OFFSET($A$1,(ROW()-1)*7,0,7,1))

并像之前一样抄下来。

稍微解构一下,定义一个从行和列开始向下和横向的OFFSET(reference, rows, cols, height, width)范围。(如果您只想要 1x1 范围,则后两个是可选的)。没有参数返回包含函数的单元格的行号,因此在上面的例子中,它在 B1 中返回 1,在 B2 中返回 2,等等,所以我们只需减去 1 并乘以我们想要的大小(在本例中为 7)即可确定列表中求和的目标应该从哪里开始。rowscolsreferenceheightwidthROW()

答案2

是的,可以做到。

尝试一下:

=SUM(INDIRECT(ADDRESS((CELL("row",B1)-1)*7+1,1)):INDIRECT(ADDRESS((CELL("row",B1))*7,1)))

编辑:

感谢 Mike Woodhouse(参见他的回答),我可以稍微简化我的解决方案。

Row()(在单元格“B1”中)将执行相同的CELL("row",B1)操作

=SUM(INDIRECT(ADDRESS((ROW()-1)*7+1,1)):INDIRECT(ADDRESS(ROW()*7,1)))

会做同样的事情,但更简单一些。

解释:

然后您需要计算地址。

(CELL("row",B1)-1)*7+1将给出起始单元格。CELL("row",B1)给出当前行的编号。减 1 乘以 7 并加 1 将给出每行的起始每日行作为数字。

ADDRESS((CELL("row",B1)-1)*7+1,1)是用数字制作地址字符串,我给出了计算出的起始行号和列号(末尾的 1)

INDIRECT(ADDRESS((CELL("row",B1)-1)*7+1,1))间接是根据字符串创建一个范围。

与最后一个所需单元格相同。INDIRECT(ADDRESS((CELL("row",B1))*7,1))区别仅在于结束行的计算。

然后我把整个东西都给了Sum,就完成了。只要抄下 52 次,你就可以得到每周的总数。

解决方案

相关内容