Skip to content

Instantly share code, notes, and snippets.

@DuongAQ
Last active March 27, 2018 09:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DuongAQ/9a8d1e6c1c4263c3f7c2d1b728edf03f to your computer and use it in GitHub Desktop.
Save DuongAQ/9a8d1e6c1c4263c3f7c2d1b728edf03f to your computer and use it in GitHub Desktop.
Sub FIFO_VBA() 'Tính giá xuất kho theo FIFO
Dim SL_Xuat As Long 'Thiết lập biến xác định số lượng cần xuất
Dim i As Integer 'Biến i chạy trong vòng lặp xét lần Xuất
Dim j As Integer 'Biến j chạy trong vòng lặp xét số lượng xuất dựa trên số đã nhập
Dim SL_Cac_Lan_Nhap As Long 'Số lượng các lần nhập xét theo FIFO
Dim TT_Xuat As Double 'Giá trị xuất kho = Thành tiền
Dim cot_SL_Nhap As Variant 'Thiết lập biến Cột số lượng nhập
Dim cot_DG_Nhap As Variant 'Thiết lập biến Cột đơn giá nhập
Range("I3:I1000").ClearContents 'Làm mới cột kết quả giá trị xuất kho tính bằng FIFO / cột I
cot_SL_Nhap = Range("C3", Range("C65536").End(xlUp)) 'Cột Số lượng nhập / cột C
cot_DG_Nhap = Range("D3", Range("D65536").End(xlUp)) 'Cột Đơn giá nhập / cột D
For i = 3 To Range("A" & Rows.Count).End(xlUp).Row 'Xét vòng lặp dựa trên tổng số dòng cột A, từ dòng 2 đến dòng cuối có dữ liệu
TT_Xuat = 0 'Giá trị xuất kho ban đầu
SL_Xuat = Range("H" & i) 'Số lượng xuất ban đầu / xét tại cột H, biến i
j = 1 'Tại vị trí bắt đầu thì biến j sẽ là dòng thứ nhất
Do While SL_Xuat > 0 'Chỉ xét khi số lượng xuất ban đầu >0
SL_Cac_Lan_Nhap = cot_SL_nhap(j, 1) 'Xét từng lần nhập
cot_SL_Nhap(j, 1) = IIf(cot_SL_Nhap(j, 1) > SL_Xuat, cot_SL_Nhap(j, 1) - SL_Xuat, 0) 'Hàm iif để viết trực tiếp hàm IF trong VBA, tính số lượng xuất phân bổ cho các lần nhập
SL_Xuat = SL_Xuat - (SL_Cac_Lan_Nhap - cot_SL_Nhap(j, 1)) 'Số lượng tính xuất kho theo các lần nhập
TT_Xuat = TT_Xuat + (SL_Cac_Lan_Nhap - cot_SL_Nhap(j, 1)) * cot_DG_Nhap(j, 1) 'Thành tiền xuất kho theo các lần nhập
j = j + 1 'lặp lại biến j tới các lần xuất tiếp theo cho tới khi đủ số lượng xuất
Loop
Range("I65536").End(xlUp)(2) = TT_Xuat 'Lấy kết quả giá trị xuất kho vào cột I
Next i
End Sub
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment