计算电子表格中的小计行

Posted

技术标签:

【中文标题】计算电子表格中的小计行【英文标题】:Compute subtotal rows in a spreadsheet 【发布时间】:2012-04-30 18:09:03 【问题描述】:

我有一个如下所示的电子表格:

   A         B               C
1  Section   Task            Dev Hours
2  4         PROJECT TOTAL   =c3+....
3  4.1       Public site     =c4+c5+...
4  4.1.1     User Accounts   2
5  4.1.2     Daily Deal      =sum(c6:c7)
6  4.1.2.1   Model           4
7  4.1.2.2   View            2

我想要一种更好的方法来计算 C 列中非叶行的小计。当我添加/删除行时,使用 =sum 很容易出错。另外我只能在所有孩子都离开时使用它,否则它会重复计算。使用加法更容易出错并且更烦人。有没有办法告诉 Excel,OpenOffice,LibreOffice,Google Documents 根据 A 列中的大纲数字汇总所有后续子行的 C 列中的值?我喜欢这样的功能:

=sum_children(A2)

其中 A2 是具有当前行大纲编号的单元格。

【问题讨论】:

【参考方案1】:

您可以使用数组公式来执行此操作。对于下面的公式,我假设您的 Section 值已按上面所示进行排序。在C2 中,粘贴以下内容并按Ctrl+Shift+Enter 输入公式:

=SUM(IF(LEFT($A3:$A$7,LEN(A2))=A2,IF(ISERROR(FIND(".",$A3:$A$7,LEN(A2)+2)),$C3:$C$7,0),0))

然后您应该能够复制单元格 C2 并粘贴到下面代表父部分的任何单元格上。

基本上,此公式会检查当前行下方的 A 列以查找以当前部分开头的字符串,并且仅对那些在当前部分 +“。”之后没有额外句点的字符串求和开发小时数。

为避免在向表格添加其他部分时更新这些公式,您可以将数组的端点(示例公式中的A7C7)设置为超出表格底部的一行(例如A50C50)。这可能会稍微影响性能,但实际上只有当您过度使用并给自己一个 50,000 行垫时。

【讨论】:

哇,您是 Excel 向导。在 Google Docs 中,如果您将整个内容包装在 =arrayfunction() 中而不是输入 Ctrl+Shift+Enter,则此方法有效。 我有点担心+2 会在大纲级别有两位数时中断,例如4.1.10.2 实际上+2 在所有情况下都应该没问题。它所做的只是确保FIND() 函数在当前部分加上另一个句点之后开始寻找其他句点。因此,例如,如果当前部分是4.1.10,它会从第 8 位开始查看以下部分(即在 4.1.10 的 6 个字符之后加上一个句点)。它将查找在该字符之后没有其他句点的任何匹配部分,包括 4.1.10.104.1.10.100000 啊,你是对的:它是用于跳越期间,而不是数字。谢谢!

以上是关于计算电子表格中的小计行的主要内容,如果未能解决你的问题,请参考以下文章

python 100行Python中的电子表格

基于单个单元格值的 Google 电子表格中的重复行

如何将excel电子表格中的2行匹配2列?

我们如何在电子表格公式中更改列值并保持行不变?

将谷歌电子表格行值转换为不同工作表中的列

如何消除电子邮件中表格行之间的分隔?