每 11 行求和 excel

Sum every 11 rows excel

我有一个 table 有 2600 多行,与我所在地区的城镇及其人口有关;每个城镇有 11 行,每个年龄 class(0-9、10-19 等等)各一行。 我需要得到每个城镇的人口总和;当然我可以手动完成,但这是一项永无止境的工作;我想知道是否有某种命令告诉 excel 每 11 行求和并对所有城镇求和。 我认为这是一种循环,但我不知道该怎么做。

您可以使用 MOD 函数执行此操作,该函数给出除法的余数。您可以查看每个行号,如果它的 MOD of 11 等于零,那么它就是您要查找的行。

在你的示例中,我计算了每个部分中的 10 个项目,所以我不确定我是否完全理解。假设您需要对以 9 结尾的每一行(A9、A19、A29 等)求和。您可以用 11 替换下面的 9。

=ROW(A9) 获取行号。

=MOD(ROW(A9),9) 判断天气情况下数字是否可以被 9 整除。如果它是 9 的倍数,它将 return 数字 0。

现在使用 SUM 函数并按 CONTROL+SHIFT+ENTER 完成它。请注意,公式栏使用花括号指示这是一个数组函数。您不需要自己输入这些内容。

{=SUM(A1:A9*(MOD(ROW(A1:A9),9)=0))}

使用 the SUMIF function 可以减少问题。那么问题就变成了如何将其应用于您的数据集。

假设您的 2600 多行中的一列包含城镇名称(或其他唯一标识符),并且您有一个城镇列表(或其他唯一标识符),则可以使用以下方法。

E2中的公式为=SUMIF(A:A,D2,C:C),E3中的公式为=SUMIF(A:A,D3,C:C)。 A到C是所有数据的列表,D是城镇列表。

对于 VBA 解决方案,您应该能够在循环中使用一个步骤。 因此,如果您希望一次步进 11 行。

Public Sub IterateRows()

Dim rData As Range, rPtr As Range
Dim dSum As Double
Dim i As long

Set rData = Sheet1.Range("A1:A1000")
For i = 1 To rData.Rows.Count Step 11
    Set rPtr = rData(1).Resize(11).Offset(i - 1)
    dSum = Application.WorksheetFunction.Sum(rPtr)
Next

End Sub

如果您想要工作表函数解决方案,您可能必须使用 MOD 运算符并检查值何时为零。

你有参考专栏吗?就像...例如,A 列有城镇名称,B 列有年龄 Class,C 列有值。

沿着行向下,A 列将有重复的城镇名称,是吗?

像这样:

Town - Age Class - Pop
Wherever - 0-9 - 1000
Wherever - 10-19 - 2000
Wheverer - 20-29 - 2500

假设您已经维护了数据结构(无间隙),D 列(或任何列,只要确保您更改了引用)中的一个可能解决方案可能是(将其放入 D2 并将其拖到 sheet):

=IF(A1<>A2,SUM(INDIRECT("C"&ROW(A2)&":C"&SUMPRODUCT(MAX((A:A=A2)*(ROW(A:A)))))),D1)

如果每个城镇有任意数量的行,只要按城镇名称排序,列表中相同的名称就可以相邻并且没有间隙,这就有效。

在上面的测试数据集中,我从每个城镇的每个值计数中减去 250(每个 class 比前一个城市少 250)只是为了显示输出中的一些变化......你可以看到每个城市的人口比前一个少 2750 (250 * 11)。

基本上它构建了一个数组,第一行的起始位置为 "not the town above" 它遇到了一个新的城镇名称,结束位置为 "last (max) position of new town in same list" 所以这并不重要每个城镇有很多行。我认为基本上是从 1 到内存限制。 :)

尽管如此,这也有效:

=SUMIF(A:A,A2,C:C)

是的。不是开玩笑,只需将其拖到 D 列...

您也可以尝试这种手动方法,这不是一个永无止境的工作;即:

  • E11中把你的公式写成=SUM(C1:C11)
  • 复制范围E1:E11
  • select 范围 E12:E2600 并粘贴特殊函数

假设结构如下

使用 枢轴 table.

这是一项非常简单的任务

对于 LibreOffice Calc:

  1. 只是 select 包括列 headers 的完整数据区域(在我的示例中:A1:C13);
  2. 菜单 Data -> Pivot Table;
  3. Current selection;
  4. 以下数据透视设置 table: (将Town字段拖入Row Fiels区域,将Count字段拖入Data fields区域。LO Calc会默认计算计数条目的总和) .

  5. 点击 OK - 生成的枢轴 table 将如下所示:

这个方案的好处是源数据区不用按城镇排序,如果有些城镇每行没有九个值也无所谓。此外,您不需要任何公式。

编辑:

您可以像处理计算结果一样处理数据透视表的内容 table。例如,您可以使用枢轴 table 值来计算某些城镇的总和(在我的示例中,根据枢轴 table 值 [=18= 计算城镇 B 和 C 的总和) ] 和 B4 分别):