总计每11行胜出
我有一张2600多行的桌子,与我所在地区的城镇和人口有关。 每个镇有11行,每个年龄段(0-9,10-19,等等)。 我需要得到每个城镇人口的总和; 当然我可以手动做,但这是一个永无止境的工作; 我想知道是否有某种types的命令告诉excel每11行完成一次,并为所有的城镇做。 我认为这是一种循环,但我不知道如何去做。
该问题可以通过使用SUMIF函数来减less。 那么问题就变成了如何将这个应用到你的数据集中。
假设2600+行中的某一列包含城镇名称(或另一个唯一标识符),并且您有一个城镇(或其他唯一标识符)列表,则可以使用以下方法。
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:
- 只需select包含列标题的完整数据区域(在我的例子中:
A1:C13
); - 菜单
Data
– >Pivot Table
; -
Current selection
; -
以下数据透视表的设置: (将
Town
字段拖到Row Fiels
区域,将Count
字段拖到Data fields
区域,LO Calc将默认提供计算Count项目的总和)。 -
点击确定 – 生成的数据透视表将如下所示:
这个解决scheme的优点是源数据区不是按城镇sorting的,如果一些城镇没有九个价值行,每个城镇都没有问题。 另外,你不需要任何公式。
编辑:
您可以像计算结果一样处理数据透视表的内容。 例如,您可以使用数据透视表值来计算一些城镇的总和(在我的示例中,分别基于数据透视表值B3
和B4
计算城镇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))}