2016-04-28 87 views
0

我下面的公式將單元格減去,直到達到零爲止,然後移動到下一個單元格。減法基於值「B」。每次公式遇到值「B」時,都會執行此操作。減去單元格中的金額直到達到0多個提醒金額

問題:我一直在試圖推動這個公式,因爲每次發現「B」都是細微的,直到零,這些數量是相鄰價格的倍數。 可否請你提供一個這樣做的公式?

例如:當它遇到第一個B時,100×10的全部值將被相乘並且提醒50將乘以15,即下一個A的50×15價格。這些值將被相加。

enter image description here

= MAX(SUMIF($ A $ 2:A2, 「A」,$ B $ 2:B2)-SUMIF($ A $ 2:$ A $ 10, 「B」,$ B $ 2 :$ B $ 10),0)

50的提醒來自B 150 - A 100之間的區別,剩下50個仍然被吸收。

的解釋進一步的計算:

enter image description here

enter image description here

這就是道歉的意思是說的

+0

你的問題是一個陳述,而不是一個問題。你的例子需要更清晰。你談論的這個「剩下的50」是什麼? – OldUgly

+0

@oldUgly提醒5o介於150 - 100 = 50之間。 – James

+0

此操作正在進行,直到B的全部被吸收。 – James

回答

0

你的問題的計算還是很不清楚。 「我的公式下面減去一個單元直到它達到零」是什麼意思?另外,正如OldUgly所指出的那樣,您似乎忽略了第二個答案。由於我們無法相互理解,請查看下面的代碼並嘗試自己重寫以適應您的需求。它假定數據位於名爲「Data」的工作表中,並且有一個按鈕(Button1)來運行代碼。

Dim lLastRow As Long 
Dim i As Integer 
Dim QtyNumberA, QtyNumberB, QtyNumberRem As Integer 

Sub Button1_Click() 
lLastRow = Worksheets("Data").Cells(2, 1).End(xlDown).Row 'Rows with data, starting 2nd row (titles in the first) 
QtyNumberA = 0 'Variable for storing quantities of A 
QtyNumberB = 0 'Variable for storing quantities of B 
QtyNumberRem = 0 'Variable for storing quantities remaining 

For i = 2 To lLastRow 'scan all rows with data 
    If (Worksheets("Data").Cells(i, 1).Value = "A") Then 
     QtyNumberA = QtyNumberA + Worksheets("Data").Cells(i, 2).Value 
    ElseIf (Worksheets("Data").Cells(i, 1).Value = "B") Then 
     QtyNumberB = QtyNumberB + Worksheets("Data").Cells(i, 2).Value 
     QtyNumberRem = QtyNumberA - QtyNumberB 
     Worksheets("Data").Cells(i, 6) = QtyNumberRem 
    End If 
Next 
End Sub 
+0

我在上面的問題中添加了一個解釋。感謝您的幫助 – James

+0

如果減法必須是順序的,我會創建al數組來存儲Quantity:A的價格對(例如:'ArrayA =((100,10),(250,15)... '),並且每次發現B時,我都會從ArrayA的第一個元素中減去,如果B的數量大於第一個元素,則通過消除第一個元素來縮小ArrayA,並將第二個元素(現在是第一個元素)設置爲剩餘數量 – CMArg

+0

的這似乎是個好主意我會試試這個 – James