Nhờ Giaỉ thích code VBA xuất giá Fifo (1 người xem)

Người dùng đang xem chủ đề này

beckentan

Thành viên mới
Tham gia
18/3/13
Bài viết
26
Được thích
2
Option Explicit
Function GiaFifo(SL_Xuat As Double, sMaHH As String, RngData As Range, MaCol As Long, SLNhapCol As Long, SLXuatCol As Long, DGNhapCol As Long, Optional TT As Boolean = False)
On Error GoTo Exit_UDF
Dim TongXuat As Double, TongNhap As Double
Dim i As Long, s As Long, j As Long
Dim GiaXuat(), ArrData(), ArrSlNh(), ArrDgNh()
If SL_Xuat = 0 Or Len(sMaHH) = 0 Then
GiaFifo = ""
GoTo Exit_UDF
End If
ArrData() = RngData.Value
TongXuat = 0: s = 0
For i = 1 To UBound(ArrData) - 1
If ArrData(i, MaCol) = sMaHH Then
s = s + 1
ReDim Preserve ArrSlNh(1 To s): ReDim Preserve ArrDgNh(1 To s)
ArrSlNh(s) = ArrData(i, SLNhapCol)
ArrDgNh(s) = ArrData(i, DGNhapCol)
TongXuat = TongXuat + ArrData(i, SLXuatCol)
End If
Next i
If s = 0 Then
GiaFifo = ""
GoTo Exit_UDF
End If
TongNhap = 0: j = 0
For i = 1 To s
TongNhap = TongNhap + ArrSlNh(i)
If TongNhap > TongXuat Then
j = j + 1
ReDim Preserve GiaXuat(1 To j)
If TongNhap - TongXuat >= SL_Xuat Then
GiaXuat(j) = "(" & SL_Xuat & "*" & ArrDgNh(i) & ")"
Exit For
Else
GiaXuat(j) = "(" & (TongNhap - TongXuat) & "*" & ArrDgNh(i) & ")"
SL_Xuat = SL_Xuat - (TongNhap - TongXuat)
TongXuat = TongNhap
End If
End If
Next i
GiaFifo = Join(GiaXuat, "+")
If TT = True Then
GiaFifo = Evaluate(GiaFifo)
End If
Erase GiaXuat
Exit_UDF:
Erase ArrData(), ArrSlNh(), ArrDgNh()
If Err <> 0 Then
MsgBox Err.Description, vbCritical
Exit Function
End If
End Function


Như tựa chủ đề em xin nhờ các cao nhân giải thích giúp em dòng code này với ạ em mới học nên không thông được cám ơn các cao nhân đã ghé qua. Thanks!
 
Như tựa chủ đề em xin nhờ các cao nhân giải thích giúp em dòng code này với ạ em mới học nên không thông được cám ơn các cao nhân đã ghé qua. Thanks!
Mới học thôi thì từ từ tìm hiểu chứ tôi thấy Function này truyền rất nhiều tham số, bạn mới học mà nhìn như vậy dễ tẩu quả nhập ma lắm
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom