在我的一本工作簿中,它将具有动态物料清单(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"))
offset
,match
,index
,row
实现这一目标,但数组公式的使用可能不会“实现这些动态结构有很多行,所以让它自动化对我来说真的很有用。我无法运行宏(不允许)
我认为解决方案将是一个长命令句,如果有人可以帮助解释一些(逻辑,可能是子步骤的一个非常简短的目标),我们将非常感激
我喜欢这里因为我学到了很多东西(而不是在下一个相同的情况下得到一个现成的解决方案)
我研究了下面的示例数据。 (编辑:“手动计算的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
答案 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在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。