Em làm 1 file mới cho mấy anh dễ xem, cũng tương tự như trên:
Ví dụ:
+ Ngày 11/10 Nhập 10 Sim A giá 39,000
+ Ngày 12/10 Nhập 5 Sim A giá 40,000
+ Ngày 13/10 Xuất 8 Sim A
+ Ngày 14/10 Xuát 7 Sim A
+ Ngày 15/10 Nhâp 2 Sim A giá 39,000
+ Ngày 15/10 Nhập 3 Sim A Giá 40,500
+ Ngày 16/10 Xuất 5 Sim A
+ Ngày 17/10 Nhập 5 Sim A giá 40,000
+ Ngày 18/10 Nhập 20 Sim B giá 41,000
+ Ngày 19/10 Nhập 10 Sim C giá 42,000
+ Ngày 20/10 Nhập 5 Sim A giá 43,000
+ Ngày 21/10 Xuất 10 Sim A
Như vậy
+ Giá xuất Sim A cho ngày 13 = 8*39,000 = 312,000
+ Giá xuất Sim A cho ngày 14 = (2*39,000)+(5*40,000) = 278,000
+ Giá xuất Sim A cho ngày 16 = (2*39,000)+(3*40,500) = 199,500 + Giá xuất Sim A cho ngày 21 = (5*40,000)+(5*43000) = 415,000 (Em đang gặp phải trục trặc chổ này vì ko biết làm sao phân loại các loại hàng theo tên ở cột C)
Theo cách của anh Thắng HD thì chỉ áp dụng được cho 1 loại hàng, nếu tên hàng khác thì vẫn lấy số lượng từ trên xuống theo kiểu FIFO. Mong mấy anh hướng dẫn dùm em.
Hàm GiaXK em tham khảo dc ở bài HD của anh Thắng code như sau:
PHP:
Function GiaXK(SL_Xuat, Rng As Range, Optional TT As Boolean = False)
Dim TongXuat, TongNhap, XuatCon
If SL_Xuat = 0 Then
GiaXK = ""
Exit Function
End If
TongXuat = Application.WorksheetFunction.Sum(Rng.Offset(, 1).Resize(, 1))
For Each Cll In Rng.Resize(, 1)
TongNhap = TongNhap + Cll.Value
If TongNhap > TongXuat Then
If TongNhap - TongXuat >= SL_Xuat Then
GiaXK = GiaXK & " (" & SL_Xuat & "*" & Cll.Offset(, 2).Value & ")"
Exit For
Else
GiaXK = GiaXK & " (" & (TongNhap - TongXuat) & "*" & Cll.Offset(, 2).Value & ")"
SL_Xuat = SL_Xuat - (TongNhap - TongXuat)
TongXuat = TongNhap
End If
End If
Next
GiaXK = Replace(Trim(GiaXK), " ", "+")
If TT = True Then
GiaXK = IIf(GiaXK = "", 0, Evaluate(GiaXK))
End If
End Function