0

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

   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 是具有当前行大纲编号的单元格。

4

1 回答 1

2

您可以使用数组公式来执行此操作。对于下面的公式,我假设您的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 行垫时。

于 2012-04-30T18:30:49.563 回答