多级总结(相关子级别到其父级别)没有宏

时间:2014-11-05 11:29:25

标签: excel excel-formula

在我的一本工作簿中,它将具有动态物料清单(BoM)结构。表格将是动态的,因此契约级别可以及时更改。

常量是:

  • 只有孩子才能获得价值,父母才能从中获得价值 他们的孩子。
  • 父值=其子值的总和

目标是:

  • 任何标记为父的行是其子项的值的总和。 level(n + 1)是n级的孩子 例如

    1       {30+50}         parent
    2       {10+10+10}      parent
    3       10              child
    3       10              child
    3       10              child
    2       50              parent
    

我尝试了什么:

  • 我可以实现父/子标签。假设等级标题在 单元格A1则相关公式为:

    =IF(NOT(ISBLANK(A3));IF(A3>A2;"parent";"child");IF(A46=A45;"child";"parent"))

  • 搜索网络特别是SO然而找不到有益的 示例
  • 经过大量搜索后,我得出结论认为可以通过offsetmatchindexrow实现这一目标,但数组公式的使用可能不会“实现

这些动态结构有很多行,所以让它自动化对我来说真的很有用。我无法运行宏(不允许)

我认为解决方案将是一个长命令句,如果有人可以帮助解释一些(逻辑,可能是子步骤的一个非常简短的目标),我们将非常感激

我喜欢这里因为我学到了很多东西(而不是在下一个相同的情况下得到一个现成的解决方案)

我研究了下面的示例数据。 (编辑:“手动计算的Vals”列添加以澄清要求的内容。实际上,该列是我需要通过Excel自动完成的内容)

edit2:“手动计算的Vals”列中出现错误。感谢XORLX。我纠正了它。

问候

Level   Value   Parent/Child    Manually Calculated Vals
0               parent          1815
1               parent          668
2               parent          110
3       19      child           
3       91      child           
2               parent          330
3               parent          200
4       40      child           
4       79      child           
4       81      child           
3       60      child           
3       42      child           
3       28      child           
2       3       child           
2       35      child           
2               parent          137
3               parent          113
4       46      child           
4       67      child           
3       24      child           
2       53      child           
1               parent          1147
2               parent          195
3       96      child           
3       99      child           
2               parent          325
3               parent          142
4       59      child           
4       83      child           
3       40      child           
3       79      child           
3       64      child           
2               parent          240
3               parent          151
4       80      child           
4       71      child           
3       89      child           
2               parent          157
3       57      child           
3       100     child           
2               parent          169
3       91      child           
3       20      child           
3       58      child           
2       61      child           

1 个答案:

答案 0 :(得分:1)

假设您的表位于A1:C46(第1行中包含标题),请将此数组公式** 放在D2中:

=IF(C2="child","",SUM(B3:INDEX(B3:B$46,LOOKUP(10^10,MATCH({6,1},SEARCH("T",(A3:A$46<=A2)&"T"),0))-1)))

根据需要复制。

此致

**数组公式的输入方式与&#39;标准&#39;相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。