计算电子表格中的小计行
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 列以查找以当前部分开头的字符串,并且仅对那些在当前部分 +“。”之后没有额外句点的字符串求和开发小时数。
为避免在向表格添加其他部分时更新这些公式,您可以将数组的端点(示例公式中的A7
和C7
)设置为超出表格底部的一行(例如A50
和 C50
)。这可能会稍微影响性能,但实际上只有当您过度使用并给自己一个 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.10
和 4.1.10.100000
。
啊,你是对的:它是用于跳越期间,而不是数字。谢谢!以上是关于计算电子表格中的小计行的主要内容,如果未能解决你的问题,请参考以下文章