编写VBA makro来汇总嵌套的物料清单

时间:2016-05-23 15:19:11

标签: excel vba excel-vba

您好我在网上广泛浏览了一下,但未能找到计算嵌套总计表的方法。

我的数据如下图所示。

Nested Bom

我正在寻找的是一种方法来将项目的所有子项目相加并将该总项目放入原始项目的成本中。

所以例如第6行的总和将是第7,8,9和10行的总和,但是第2行的总数将是第5,6,11和12行的总数,每行都需要要单独进行小计。

我尝试过excels小计功能,但它很笨拙,而不是一般化的解决方案。我可能需要随着时间的推移添加或减去组件并重新计算总数。

我已尝试了一些if和for循环组合,以及尝试调用自己的函数,但成功非常有限。

我认为我有一个阻止如何处理这个问题,以及一些编程知识差距,比如一个函数可以调用它自己,如果是,它会自动创建一组独立的函数实例变量,或者会新调用覆盖旧实例变量。

任何有关方法和知识的帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

这个公式对你有用吗?在新列中,例如E,从E3开始并向下复制:

=SUM(IF(LEFT(B3:B$999,LEN(B3))=B3,D3:D$999,0))

这里999是一个虚拟的最后一行---根据你的情况改变它。

假设B列和D列分别保留OutlineBom Cost。逻辑是:当且仅当 Outline像当前行的Outline一样开始时,总结当前行下面的所有行(包括)。因此,如果当前行中的Outline为1.2.3,则会将Bom Costs以1.2.3(1.2.3.1,1.2.3.2,1.2.3.2)开头的所有Outline汇总起来。 1等。)。

此公式假定轮廓已正确排序。

还假设Outline值是文本。如果不是,则Outline为整数(1,2,...)时,上述公式将失败。这个较长的公式将整数转换为文本,应该有效:

=SUM(IF(LEFT(B3:B$999,LEN(B3))=IF(LEN(SUBSTITUTE(B3,".",""))<LEN(B3),B3,TEXT(B3,"0")),D3:D$999,0))

希望这有帮助。