分层Excel数学函数

时间:2014-02-22 05:04:23

标签: excel function math excel-formula excel-2010

我正在开发一个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)

我知道这可能令人困惑。基本上,每个级别需要乘以其父级(父级:四个椅子=儿童:四个席位)。但是,顶级父母需要先更新。

另一个注意事项:每个级别由两个空格定义。例如:

第一级:没有空格 第二级:两个空格+部分名称 第三级:四个空格+部分名称 第四级:六个空格+部分名称 等

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

看图片

enter image description here

在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 & ")"))

将所有公式复制下来

根据您的区域设置,您可能需要更改字段分隔符“;”通过“,”