本帖最后由 白云2011 于 2012-7-16 00:16 编辑
不知道那里还有点问题。后面那行不对。
开始我想是否需要建立保留99批次数组.可能做错了。
Sub s()
Dim i&, j, ar
ar = Range("A1:R" & [I65536].End(3).Row + 1)
ar(4, 12) = 0: ar(4, 13) = 0: ar(4, 14) = 0
ar(5, 15) = ar(5, 6): ar(5, 16) = ar(5, 7)
For i = 5 To UBound(ar) - 1
ar(i, 15) = Abs(ar(i - 1, 12) - ar(i, 9)) '先进部分(库存
ar(i, 16) = ar(i - 1, 13) '0
If ar(i, 15) = 0 Then j = 0 Else j = 2
ar(i, 15 + j) = ar(i, 6) '后进部分(入库
ar(i, 16 + j) = ar(i, 7)
If ar(i, 6) <> "" Then ar(i, 8) = ar(i, 7) * ar(i, 6) '[购进]金额
ar(i, 12) = ar(i - 1, 12) + ar(i, 6) - ar(i, 9) '[库存]剩余数量
If ar(i, 9) = "" Then '没出库 [库存] 金额 = 遗留+入库。
ar(i, 14) = ar(i - 1, 14) + ar(i, 8) '[库存] 金额
ar(i, 13) = Round(ar(i, 14) / ar(i, 12), 2) '[库存]单价
Else '出库 先处理 [领用]单价
If ar(i - 1, 15) >= ar(i, 9) Then '如果先进货量充足
ar(i, 10) = ar(i - 1, 13) '[领用]单价
ar(i, 11) = ar(i, 9) * ar(i, 10) '[领用]金额
ar(i, 14) = ar(i - 1, 14) + ar(i, 8) - ar(i, 11) '[库存]金额
ar(i, 13) = Round(ar(i, 14) / ar(i, 12), 2) '[库存]单价
Else ''''''''用到先进和先出
j = (ar(i, 9) - ar(i - 1, 15)) * ar(i - 1, 18)
ar(i, 11) = Round(ar(i - 1, 15) * ar(i - 1, 16) + j, 2) '[领用]单价
End If
ar(i, 10) = Round(ar(i, 11) / ar(i, 9), 2) '[领用]金额
ar(i, 14) = ar(i - 1, 14) + ar(i, 8) - ar(i, 11) '[库存]金额
ar(i, 13) = Round(ar(i, 14) / ar(i, 12), 2) '[库存]单价
End If
Next
ar(4, 12) = "数量": ar(4, 13) = "单价": ar(4, 14) = "金额"
[A1].Resize(UBound(ar), 18) = ar
End Sub
|