2015-10-06 225 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很高興幫助。如果有效,請標記爲正確。此外,我改變了它包裝列實際工作表上的列順序不同於顯示的簡化順序。 –