Excel SUM和OFFSET公式

使用SUM和OFFSET查找数据动态范围的总计

如果Excel 工作表包含基于单元格更改范围的计算,则在SUM OFFSET公式中一起使用SUM和OFFSET函数可简化保持计算更新的任务。

使用SUM和OFFSET函数创建动态范围

©Ted French

如果您在一段持续变化的时间段内使用计算 - 例如本月的总销售额 - OFFSET功能允许您设置一个动态范围,随着每天的销售数据的添加而不断变化。

SUM函数本身通常可以容纳插入到正在求和的范围中的新数据单元。

将数据插入函数当前所在的单元格时会发生一个异常。

在本文附带的示例图片中,每天的新销售数字都会添加到列表的底部,这会强制总数在每次添加新数据时不断向下移动一个单元格。

如果SUM函数本身用于总计数据,则每次添加新数据时都需要修改用作函数参数的单元格范围。

然而,通过一起使用SUM和OFFSET函数,总和的范围变为动态的。 换句话说,它改变以适应新的数据单元。 添加新的数据单元不会导致问题,因为随着每个新单元格的添加,范围会不断调整。

语法和参数

请参阅本文随附的图片以跟随本教程。

在此公式中,SUM函数用于总计提供的数据范围作为其参数。 该范围的起始点是静态的,并且被识别为单元格参考第一个要由公式计算的数字。

OFFSET函数嵌套在SUM函数中,用于为公式计算的数据范围创建一个动态端点。 这是通过将范围的终点设置为公式位置上方的一个单元来完成的。

公式的语法

= SUM(范围开始:OFFSET(参考,行,列))

范围开始 - (必填)SUM函数将合计的单元格范围的起始点。 在示例图像中,这是单元格B2。

参考 - (必需)用于计算范围端点的单元格引用位于多行和多列之外。 在示例图像中, Reference参数是公式本身的单元格引用,因为我们总是希望范围在公式上方结束一个单元格。

- (必填)用于计算偏移量的参考参数上方或下方的行数。 该值可以是正值,负值或设为零。

如果偏移量的位置高于Reference参数,则此值为负值。 如果低于这个值,那么Rows的说法是肯定的。 如果偏移量位于同一行中,则该参数为零。 在这个例子中,偏移量在Reference参数上面开始一行,所以这个参数的值是负的(-1)。

Cols - (必填)用于计算偏移量的Reference参数左侧或右侧的数。 该值可以是正值,负值或设为零

如果偏移量的位置在Reference参数的左侧,则该值为负值。 如果在右边, Cols的论点是肯定的。 在这个例子中,总计的数据和公式在同一列,所以这个参数的值是零。

使用SUM OFFSET公式来总计销售数据

此示例使用SUM OFFSET公式来返回工作表B列中列出的日销售数字的总和。

最初,公式被输入到单元格B6中,并将销售数据总计四天。

下一步是将SUM OFFSET公式向下移动以腾出第五天的销售总额。

这是通过插入一个新的第 6 ,将公式向下移动到第7行来完成的。

作为移动的结果,Excel会自动将Reference参数更新到单元格B7 ,并将单元格B6添加到由公式求和的范围中。

输入SUM OFFSET公式

  1. 点击单元格B6,这是公式结果最初显示的位置。
  2. 点击功能区菜单的公式选项卡。
  3. 从功能区中选择Math&Trig打开功能下拉列表。
  4. 点击列表中的SUM调出函数的对话框
  5. 在对话框中,单击Number1行。
  6. 单击单元格B2将该单元格引用输入到对话框中。 该位置是公式的静态终点;
  7. 在对话框中,单击Number2行。
  8. 输入以下OFFSET函数: OFFSET(B6,-1,0)以形成公式的动态终点。
  9. 点击OK完成该功能并关闭对话框。

总值5679.15美元 出现在单元格B7中。

当您单击单元格B3时,完整函数= SUM(B2:OFFSET(B6,-1,0))出现在工作表上方的公式栏中

添加第二天的销售数据

要添加第二天的销售数据:

  1. 右键单击行6的行标题以打开上下文菜单。
  2. 在菜单中,单击插入将新行插入到工作表中。
  3. 因此,SUM OFFSET公式向下移动到单元格B7,现在第6行是空的。
  4. 点击单元格A6
  5. 输入数字5表示第五天的销售总额将被输入。
  6. 点击单元格B6。
  7. 输入数字$ 1458.25并按下键盘上的Enter键。

B7单元更新为7137.40美元。

当您单击单元格B7时,更新的公式= SUM(B2:OFFSET(B7,-1,0))出现在公式栏中。

注意 :OFFSET函数有两个可选参数: 高度宽度,在本例中省略。

这些参数可以用来告诉OFFSET函数输出的形状,因为它有很多行高和很多列宽。

通过省略这些参数,默认情况下,该函数使用Reference参数的高度和宽度,而在此示例中,该参数是一行高一列宽。