每11行总和优秀

时间:2015-11-16 15:44:28

标签: excel libreoffice-calc

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

6 个答案:

答案 0 :(得分:1)

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

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

Excel example

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

答案 1 :(得分:1)

对于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运算符并检查值何时为零。

答案 2 :(得分:1)

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

走下行A列会有重复的城镇名称,是吗?

像这样:

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

假设您已经维护了数据结构(NO GAPS),D列中的可能解决方案(或任何列只是确保您更改引用)可能是(将其放入D2并将其拖动到工作表的长度):

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

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

test data

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

基本上它构建了一个阵列,其起始位置为&#34;而不是上面的城镇&#34;在第一行中,它遇到一个新的城镇名称,结束位置为#34;同一列表中新城镇的最后(最大)位置&#34;这就是每个城镇你有多少行没有关系。基本上从1到内存限制,我想。 :)

尽管如此,这也有效:

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("NUMBER", "ABC");
formData.add("ID", "123");
formData.add("FILE",file); // this is spring multipart file
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "multipart/form-data"); 
headers.set("Accept", "text/plain"); 
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, headers);
RestTemplate restTemplate = getRestTemplate();

String result  = restTemplate.postForObject(uploadUri, requestEntity, String.class);

是的。不开玩笑只是把它拖到D列......

答案 3 :(得分:1)

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

enter image description here

  • E11中将您的公式设为=SUM(C1:C11)
  • 复制范围E1:E11
  • 选择范围E12:E2600并粘贴特殊功能

答案 4 :(得分:1)

假设以下结构

enter image description here

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

对于LibreOffice Calc:

  1. 只需选择包含列标题的完整数据区域(在我的示例中为A1:C13);
  2. 菜单Data - &gt; Pivot Table;
  3. Current selection;
  4. 以下设置数据透视表: enter image description here (将Town字段拖到Row Fiels区域,将Count字段拖到Data fields区域.Lo Calc将默认计算计数条目的总和)

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

    enter image description here

  6. 此解决方案的优势在于,源数据区域无法按城镇排序,并且如果某些城镇不具有9个值行并不重要。此外,您不需要任何公式。

    编辑:

    您可以使用与计算结果相同的方式处理数据透视表的内容。例如,您可以使用数据透视表值来计算某些城镇的总和(在我的示例中,分别根据数据透视表值B3B4计算城镇B和C的总和):

    enter image description here

答案 5 :(得分:0)

你可以用MOD函数做到这一点,它给出了除法的余数。您可以查看每个行号,如果它的MOD等于零,那么它就是您要查找的行。

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

=ROW(A9)为您提供行号。

=MOD(ROW(A9),9)在天气数字可以被9整除时判断为TRUE或false。如果它是9的倍数,则返回数字0.

现在使用SUM函数并按CONTROL + SHIFT + ENTER完成它。请注意,公式栏通过使用花括号表示这是一个数组函数。你不需要自己打字。

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