总计每11行胜出

我有一张2600多行的桌子,与我所在地区的城镇和人口有关。 每个镇有11行,每个年龄段(0-9,10-19,等等)。 我需要得到每个城镇人口的总和; 当然我可以手动做,但这是一个永无止境的工作; 我想知道是否有某种types的命令告诉excel每11行完成一次,并为所有的城镇做。 我认为这是一种循环,但我不知道如何去做。

该问题可以通过使用SUMIF函数来减less。 那么问题就变成了如何将这个应用到你的数据集中。

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

Excel示例

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

对于VBA解决scheme,您应该能够在循环中使用一个步骤。 所以,如果你想一次走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 

如果你想要一个工作表function的解决scheme,你可能需要使用MOD操作符,并检查值为零的时间。

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

在这里输入图像说明

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

你有任何参考专栏? 比如说,例如,列A具有城镇名称,列B具有年龄等级,并且列C具有值。

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

喜欢这个:

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

假设你已经维护了数据结构(NO GAPS),在D列(或者任何列只是确保你改变了引用)中可能的解决scheme可以是(把它放在D2中,并把它拖到你的工作表的长度):

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

如果每个城镇有一定数量的行,只要按城镇名称sorting,这样在列表中相同的名称相邻,并且没有空白。

测试数据

在上面的testing数据集中,我从每个镇的每个值减去250(每个class比以前的城市less250),只是为了显示输出的一些变化…你可以看到每个城市有2750(250 * 11 )比以前lessstream行。

基本上,在第一行build立一个起始位置为“不在上面的城镇”的数组,它遇到一个新的城镇名称到“同一列表中的新城镇的最后(最大)位置”的结束位置,不pipe你每个镇有多less行。 基本上从1到内存的限制,我想。 🙂

尽pipe如此,这也是有效的:

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

是的。 不是开玩笑,只是拖下来,列D …

假设以下结构

在这里输入图像描述

这是一个使用数据透视表的非常简单的任务。

对于LibreOffice Calc:

  1. 只需select包含列标题的完整数据区域(在我的例子中: A1:C13 );
  2. 菜单Data – > Pivot Table ;
  3. Current selection ;
  4. 以下数据透视表的设置: 在这里输入图像说明 (将Town字段拖到Row Fiels区域,将Count字段拖到Data fields区域,LO Calc将默认提供计算Count项目的总和)。

  5. 点击确定 – 生成的数据透视表将如下所示:

    在这里输入图像描述

这个解决scheme的优点是源数据区不是按城镇sorting的,如果一些城镇没有九个价值行,每个城镇都没有问题。 另外,你不需要任何公式。

编辑:

您可以像计算结果一样处理数据透视表的内容。 例如,您可以使用数据透视表值来计算一些城镇的总和(在我的示例中,分别基于数据透视表值B3B4计算城镇B和C的总和):

在这里输入图像说明

你可以用MODfunction来做到这一点 你可以看看每个行号,如果它的MOD等于零,那么这是你正在寻找的行。

我在你的例子中的每个部分计数10项,所以我不知道我完全理解。 假设你需要对以9结尾的每一行进行求和(A9,A19,A29等)。 你可以用11来replace下面的9。

=ROW(A9)=ROW(A9)得到你的行号。

=MOD(ROW(A9),9)在天气条件下,你可以得到一个TRUE或者假,如果它是9的倍数,它将返回数字0。

现在使用SUM函数并按下CONTROL + SHIFT + ENTER来完成它。 请注意公式栏通过使用大括号表明这是一个数组函数。 你不需要自己input。

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