Last active
March 27, 2018 09:12
-
-
Save DuongAQ/9a8d1e6c1c4263c3f7c2d1b728edf03f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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