我正在开发一个Excel电子表格,它有助于加快我们的工程部门的速度,并在我们的工程师创建物料清单时防止错误。
目前,我们的工程师使用SolidWorks中的Pack and Go功能将BOM导出到Excel,但这仍然要求他们查看每个细节。我试图通过条件格式化和自动数量更新来消除这项额外的工作,但是在使用一个数学函数时遇到了麻烦。
请参考下面的例子。
在以下示例中,您可以看到第一行显示的数量为四。基本上,低于该值(以分层方式)的所有内容必须乘以其父级的数量。问题是导出功能仅考虑一组子组件而不是所需的总组件。
例如,假设我正在建造一张桌子。我需要桌子组件和椅子组件。对于椅子,我会看到以下(“ - ”=一个层次结构级别):
-4 /主席(H1)(需要四把椅子)
- -1 /座位(H2)(每把椅子一个座位,但总数应为四个)
- -4 /腿(H2)(四把椅子所需的腿总数为16)
- -1 /靠背(H2)(四把椅子需要四个靠背)
- - -2 /靠背支撑(H3)(四把椅子需要四个靠背,四个靠背需要总共八个靠背支撑。
因此,椅子的总数量是四个,但是儿童组件的数量仅与一把椅子相关(例如,每把椅子一个座位)。
问题在于,考虑到装配和子装配的数量,我们必须更新每个零件以反映所需的每个零件的总数。
我想要一个可以引用父组件数量并更新子组件数量的Excel函数。它原则上是基本的,但在实现中并不那么容易。
我希望我的功能将上面的列表转换为:
-4 /主席(H1)
- -4 /座位(H1 * 4)
- -16 /腿(H1 * 4)
- -4 /后座(H1 * 4)
- - -8 /后座支撑(H2 * 2)
我知道这可能令人困惑。基本上,每个级别需要乘以其父级(父级:四个椅子=儿童:四个席位)。但是,顶级父母需要先更新。
另一个注意事项:每个级别由两个空格定义。例如:
第一级:没有空格 第二级:两个空格+部分名称 第三级:四个空格+部分名称 第四级:六个空格+部分名称 等
非常感谢任何帮助。
答案 0 :(得分:0)
看图片
在B1输入公式:
=LEN(A1)-LEN(TRIM(A1))
并复制
在C1处输入此数组公式(最后使用Ctrl Shift Enter)
=IF(B1=0;0;MAX(IF(B1-2=$B$1:$B1;ROW($A$1:$A1)-ROW($A$1)+1;"")))
在D1:
=VALUE(LEFT(A1;FIND("/";A1)-1))
在E1:
=IF(B1=0;D1;INDEX($E$1:E1;C1)*D1)
在F1:
= INDEX($ E $ 1:$ E $ 13,C1)
最后在G1:
=IF(B1=0;A1;SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;D1;E1);RIGHT(A1;3);RIGHT(INDEX($A$1:$A$13;C1);3));")";" * " & F1 & ")"))
将所有公式复制下来
根据您的区域设置,您可能需要更改字段分隔符“;”通过“,”