2015-10-06 118 views
0

我有一种情况,在Excel中导出的物料清单拉入'级别','项目'和'数量'。为了计算BoM中项目的总数量,需要将数量乘以父级数量。我已经在下面手动显示了这一点,但是由于实际数据集的大小,我想知道是否有一种方法可用VBA来计算总量值?计算总量

Level  Item   Qty  Total Qty 
    1   A   1   1 
    1   B   2   2 
    2   C   3   6 
    2   D   1   2 
    2   E   2   4 
    3   F   5   20 
    3   G   3   12 
    2   H   2   4 
    3   I   1   4 
    2   J   1   2 
    2   K   3   6 
    1   L   2   2 
    1   M   1   1 
+0

你能澄清你怎么弄总量多一点?也许在你的专栏旁边,添加你用来计算它的“公式”。 (你是怎么得到20的项目F?) – BruceWayne

+0

你怎么得到20级3 F? – Mukul215

+0

等级3'F'用于等级2'E'。该物件总共需要4 x'E',因此'F'的总数量为4 x 5. – user3673417

回答

0

这是使用的UDF。

将其粘贴到您正在使用的工作簿中的模块中。

Function qtyfind(level As Range) As Double 
    Dim i&, temp&, qtyClm&, tQtyClm& 

    'Change the Column name to match if different 
    qtyClm = WorksheetFunction.Match("QTY", Range("1:1")) 
    tQtyClm = WorksheetFunction.Match("TOTAL QTY", Range("1:1")) 

    If level = 1 Then 
     temp = Cells(level.Row, qtyClm) 
    Else 
     For i = level.Row To 2 Step -1 'loops bottom up 

      If Cells(i, level.Column) = (level.value - 1) Then 
       temp = Cells(i, tQtyClm) * Cells(level.Row, qtyClm) 
       Exit For 
      End If 
     Next 
    End If 

    qtyfind = temp 
End Function 

然后调用它在第一个单元格并抄下:

enter image description here

+0

谢谢斯科特 – user3673417

+0

@ user3673417很高兴帮助。如果有效,请标记为正确。此外,我改变了它包装列实际工作表上的列顺序不同于显示的简化顺序。 –