2014-03-03 27 views
0

我的问题是:我不知道哪个excel function(s)我应该利用,以实现我的目标没有宏。excel公式函数 - 父子单元计算从它的孩子

我的目的是:正如你在图像的下方看到的,我有一个树或结构BOM(材质清单)。如果一个细胞有它的孩子,那么我需要计算父细胞的适当值。

在图像中,黄色bg函数意味着如果单元格有孩子,则值应该与孩子的值一起计算。

本文档将作为一个活文档,随着项目的进展而更新,因此我知道可能的最大孩子数量,但我不知道在项目结束时我将使用多少最大值。

例如: D3(最初有2个孩子)可能在1年后有5个孩子,4年后有8个孩子,在项目结束时有13个孩子。但不能超过最大值(比方说25)

我需要一个结构,毕竟formula template是构造的,如果我添加一个新行作为D3的子元素,那么excel必须再次使用新的子元素与老的子元素

例如: 方法:总和儿童值 最初: D3 = D4 + D5

一会儿一个新的子加入作为D6, D3后= D4 + D5 + D6

我当不可t做手动设置。我真正的Excel将有成千上万的值,和统计的复杂计算

enter image description here

回答

1

好吧,这里的话,你可以:

F列中添加以下内容(第3行): (确定这是家长,这是最后一个孩子)

=IF(C3<>C4,IF(C3=1,"Parent","End of Children"),"")

在列G添加以下(第3行): (查看最后一个孩子的下一次出现)

=IF(F3="Parent", MATCH("End of Children",F4:F901, 0),"")

E列中添加以下内容(第3行): (基于下一对计算功能最后一个孩子的出现)

IF(F3="Parent",SUM(INDIRECT("D"&ROW(D3)+1&":D"&ROW(D3)+G3)),"")

现在拖动值E3F3G3向上和向下的数据集。

E将有你的价值观。

希望这是一个开始。

Screenshot of data

+0

这对我来说是一个非常好的开始,谢谢 –

0

我试图ForkandBeard的答案,而当每一个家长至少有一个孩子它的工作原理。如果情况并非总是如此,则公式可概括如下:

=IF(C3=1,"Parent",If(C3<>C4,"End of Children"),""). 
=IF(F3="Parent", IF(C4<>"Parent",MATCH("End of Children",F4:F901,0),""),"") 
=IF(F3="Parent",SUM(INDIRECT("D"&ROW(D3)+1&":D"&ROW(D3)+G3)),"")