动态嵌套Excel公式

问题描述

我在一个工程组织工作,拥有大量的零件和子装配数据集(50,000)。我的主要目标是弄清楚子组件的材料部分,并最终弄清楚出售给客户的套件。例如,第1部分是50%的铝,25%的钢和25%的铜。

所附图片是我正在使用的数据的摘录。

Data

A和B列显示了零件的级别(这里有两个示例)。
U列显示了按较高级别程序集的百分比表示的值。

我想要的是一个动态公式,它将用构成套件的材料百分比来填充第2行AT到AZ(例如,AT2中的铝应说明77%),但我还需要该公式必须动态并且可以工作对于第2部分,其中只有2个零件组成了装配体。

我使用的公式有缺陷(或者我无法在此基础上进一步发挥作用),并且我不知道如何制作一个足以输入我所需数据的动态公式。仅供参考,我有一个VBA程序,一旦我有一个好的公式,它将把公式输入到所需的行中。

预先感谢您的帮助 TJ

解决方法

我想到的最简单的方法是添加几列并使用SUMIF

  1. 为每种材料添加一个附加列,该列是每个子装配对该材料零件的贡献。例如。对于Ally,添加Ally1,该值将为U * AT,对于第2行,该字段为空白,但在第3行中为.37,在第4行中为.40

  2. 在B中插入新列,该列显示每个子装配的零件名称,因此在您的示例中,第2行为空白,第3-9行为“ Part1”,第10行为空白,第11行和第12行为“ Part2”。希望您可以通过公式执行此操作,或者它已经在数据中。

  3. 现在,您可以在每个零件的原始材料栏中创建公式,只需添加一个求和即可:

  • 范围是我们新的列B(每个子装配都有相关的零件)
  • 条件是A中的单元格(这是我们要计算的部分)
  • Sum_Range是我们在步骤1中为每种材料创建的新列,因此对于Ally来说就是Ally1。

这将为您提供所需的答案。

如果您不能添加这些列,那么您将需要使用带有If和SUMPRODUCT的矩阵公式。我总是觉得这些操作很痛苦并且理解起来很复杂,因此建议上面的简单方法。

一旁

如果这是我,那么我将避免使用VBA填写公式-只是因为我希望列可以是所有值或所有相同的公式。原因是如果以后需要更改公式,可以将其复制到下面的所有单元格中。

为此,在这种情况下,我将为每种材料插入另一列,并使用IF语句提取当前材料值(当它是子装配体时)或在步骤3中使用公式(当它是子装配体时)部分)。