excel公式函数 - 从其子项计算父单元格值

时间:2014-03-03 11:13:32

标签: excel excel-formula

我的问题是:我不知道我应该利用excel function(s)来实现我的目标,而不是宏。

我的目标:如下图所示,我有一棵树或BoM(Bill of Meterial)结构。如果一个单元格有子代,那么我需要计算父单元格的正确值。

在图像中,黄色bg函数表示如果单元格中有子项,则应使用子项的值计算值。

这份文件将是一份活文件,随着项目的进展而更新,所以我知道最多可能的孩子,但我不知道在项目结束时我将使用多少。

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

我需要一个结构,在构造完所有公式模板之后,如果我添加一个新行作为D3的子级,那么excel必须再次使用新孩子和旧孩子

例如: 方法:求和子值 原来: D3 = D4 + D5

一段时间后,一个新的孩子加入了D6, D3 = D4 + D5 + D6

我不应该进行手动设置。我真正的excel将拥有数千个值和统计复杂的计算

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)),"")