计算电子表格中的小计行

时间:2012-04-30 18:09:03

标签: excel spreadsheet google-sheets openoffice-calc libreoffice

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

   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 个答案:

答案 0 :(得分: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行垫时。