Sub FIFO_Payment()
Dim ar, aRng As Range
Application.ScreenUpdating = False
ar = [A1].CurrentRegion
Lr = Cells(Rows.Count, "A").End(xlUp).Row
Set aRng = Range("d2:d" & Lr)
r = 2
Do
cust = ar(r, 4)
payr = 0
ncust = Application.CountIf(aRng, cust)
For i = 1 To ncust
payr = payr + ar(r + i - 1, 11)
Next i
For i = 1 To ncust
If ar(r + i - 1, 10) <= payr Then
ar(r + i - 1, 12) = 0
payr = payr - ar(r + i - 1, 10)
Else
ar(r + i - 1, 12) = ar(r + i - 1, 10) - payr
payr = 0
End If
Next i
r = r + ncust
If r >= Lr Then Exit Do
Loop
[A1].Resize(UBound(ar, 1), UBound(ar, 2)) = ar
Application.ScreenUpdating = True
End Sub
Or try
in N2
Formula:
=IF(SUMIFS($J$2:J2,$D$2:D2,D2)<=SUMIFS($J$2:$J$2,$D$2:$D$2,D2),0,IF(SUMIFS($K$2:$K$11,$D$2:$D$11,D2)=0,$J2,IF(SUMIFS($K$2:$K$11,$D$2:$D$11,D2)>SUMIFS($J$2:J2,$D$2:D2,D2),0,SUMIFS($J$2:J2,$D$2:D2,D2)-(SUMIFS($K$2:$K$11,$D$2:$D$11,D2)+SUMIFS($L$1:L1,$D$1:D1,D2)))))
Bookmarks