cách tính giá trị hàng tồn kho

Liên hệ QC

phantuancauvan

Thành viên mới
Tham gia
26/9/21
Bài viết
14
Được thích
0
em có file sau
mấy bác chỉ dùm em cách tình hàng tồn kho khi mà có nhiều giá nhập
Cụ thể
Ngày 26-9-2021 nhập A95 4.000 x 15.000 = 60.000.000 ( giá vốn) sau đó xuất đi
Ngày 27-9-2021 nhập A95 6.000 x 15.300 = 91.800.000 (giá vốn) chưa xuất
Ngày 28-9-2021 nhập A95 4.000 X 16.000 = 96.000.000 (giá vốn) chưa xuất

Ngày 30-9-2021 tổng kết thì tồn kho A95 còn là 10.000 và trị giá là 187.380.000
Nhưng làm lệnh nào cho máy hiểu làm như vậy
Em là lính mới mong các bác chỉ dạy thêm
 

File đính kèm

em có file sau
mấy bác chỉ dùm em cách tình hàng tồn kho khi mà có nhiều giá nhập
Cụ thể
Ngày 26-9-2021 nhập A95 4.000 x 15.000 = 60.000.000 ( giá vốn) sau đó xuất đi
Ngày 27-9-2021 nhập A95 6.000 x 15.300 = 91.800.000 (giá vốn) chưa xuất
Ngày 28-9-2021 nhập A95 4.000 X 16.000 = 96.000.000 (giá vốn) chưa xuất

Ngày 30-9-2021 tổng kết thì tồn kho A95 còn là 10.000 và trị giá là 187.380.000
Nhưng làm lệnh nào cho máy hiểu làm như vậy
Em là lính mới mong các bác chỉ dạy thêm
Nếu muốn làm bằng VBA thì hãy thử code sau
Mã:
`Sub TONKHO()
Dim I&, J&, k&, t&, LrN&, LrX&
Dim ArrN(), ArrX(), KQ()
Dim Dic As Object

With Sheets("NHAP")
LrN = .Cells(Rows.Count, 3).End(xlUp).Row
ArrN = .Range("C2:I" & LrN).Value
End With
With Sheets("XUAT")
LrX = .Cells(Rows.Count, 3).End(xlUp).Row
ArrX = .Range("C2:J" & LrX).Value
End With
ReDim KQ(1 To UBound(ArrN), 1 To 6)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(ArrN)
   If Not Dic.Exists(ArrN(I, 1)) Then
        t = t + 1
        Dic.Add (ArrN(I, 1)), t
        KQ(t, 1) = t
        KQ(t, 2) = ArrN(I, 1)
        KQ(t, 3) = ArrN(I, 5)
        KQ(t, 5) = ArrN(I, 5)
        KQ(t, 6) = ArrN(I, 7)
    Else
        k = Dic.Item(ArrN(I, 1))
        KQ(k, 3) = KQ(k, 3) + ArrN(I, 5)
        KQ(k, 6) = KQ(k, 6) + ArrN(I, 7)
    End If
Next I
For J = 1 To UBound(ArrX)
    If Dic.Exists(ArrX(J, 1)) Then
        Z = Dic.Item(ArrX(J, 1))
        KQ(Z, 4) = ArrX(J, 6) + KQ(Z, 4)
        KQ(Z, 5) = KQ(Z, 3) - KQ(Z, 4)
        KQ(Z, 6) = KQ(Z, 6) - ArrX(J, 8)
    End If
Next J
If t Then
Sheets("TON KHO").[A10].Resize(t, 1000).ClearContents
Sheets("TON KHO").[A10].Resize(t, 6) = KQ
Sheets("TON KHO").[A10].Resize(t, 6).Borders.LineStyle = 1
End If
Set Dic = Nothing
End Sub
[code]
Kết quả trả về đang để ở vùng A10 :F....
 

File đính kèm

Nếu muốn làm bằng VBA thì hãy thử code sau
Mã:
`Sub TONKHO()
Dim I&, J&, k&, t&, LrN&, LrX&
Dim ArrN(), ArrX(), KQ()
Dim Dic As Object

With Sheets("NHAP")
LrN = .Cells(Rows.Count, 3).End(xlUp).Row
ArrN = .Range("C2:I" & LrN).Value
End With
With Sheets("XUAT")
LrX = .Cells(Rows.Count, 3).End(xlUp).Row
ArrX = .Range("C2:J" & LrX).Value
End With
ReDim KQ(1 To UBound(ArrN), 1 To 6)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(ArrN)
   If Not Dic.Exists(ArrN(I, 1)) Then
        t = t + 1
        Dic.Add (ArrN(I, 1)), t
        KQ(t, 1) = t
        KQ(t, 2) = ArrN(I, 1)
        KQ(t, 3) = ArrN(I, 5)
        KQ(t, 5) = ArrN(I, 5)
        KQ(t, 6) = ArrN(I, 7)
    Else
        k = Dic.Item(ArrN(I, 1))
        KQ(k, 3) = KQ(k, 3) + ArrN(I, 5)
        KQ(k, 6) = KQ(k, 6) + ArrN(I, 7)
    End If
Next I
For J = 1 To UBound(ArrX)
    If Dic.Exists(ArrX(J, 1)) Then
        Z = Dic.Item(ArrX(J, 1))
        KQ(Z, 4) = ArrX(J, 6) + KQ(Z, 4)
        KQ(Z, 5) = KQ(Z, 3) - KQ(Z, 4)
        KQ(Z, 6) = KQ(Z, 6) - ArrX(J, 8)
    End If
Next J
If t Then
Sheets("TON KHO").[A10].Resize(t, 1000).ClearContents
Sheets("TON KHO").[A10].Resize(t, 6) = KQ
Sheets("TON KHO").[A10].Resize(t, 6).Borders.LineStyle = 1
End If
Set Dic = Nothing
End Sub
[code]
Kết quả trả về đang để ở vùng A10 :F....
trước tiên em cám ơn bác, nhưng hình như file bị lỗi ạ em bấm vào không sử dụng được ạ
mong bác hướng dẫn
 
trước tiên em cám ơn bác, nhưng hình như file bị lỗi ạ em bấm vào không sử dụng được ạ
mong bác hướng dẫn
Làm quên không kiểm tra trước khi gửi trả lời, thông cảm bạn nhé!
Bỏ dấu nháy đơn trước dòng Sub....và chạy thử.
Chúc vui khỏe, thành công.
 
Nếu muốn làm bằng VBA thì hãy thử code sau
Mã:
`Sub TONKHO()
Dim I&, J&, k&, t&, LrN&, LrX&
Dim ArrN(), ArrX(), KQ()
Dim Dic As Object

With Sheets("NHAP")
LrN = .Cells(Rows.Count, 3).End(xlUp).Row
ArrN = .Range("C2:I" & LrN).Value
End With
With Sheets("XUAT")
LrX = .Cells(Rows.Count, 3).End(xlUp).Row
ArrX = .Range("C2:J" & LrX).Value
End With
ReDim KQ(1 To UBound(ArrN), 1 To 6)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(ArrN)
   If Not Dic.Exists(ArrN(I, 1)) Then
        t = t + 1
        Dic.Add (ArrN(I, 1)), t
        KQ(t, 1) = t
        KQ(t, 2) = ArrN(I, 1)
        KQ(t, 3) = ArrN(I, 5)
        KQ(t, 5) = ArrN(I, 5)
        KQ(t, 6) = ArrN(I, 7)
    Else
        k = Dic.Item(ArrN(I, 1))
        KQ(k, 3) = KQ(k, 3) + ArrN(I, 5)
        KQ(k, 6) = KQ(k, 6) + ArrN(I, 7)
    End If
Next I
For J = 1 To UBound(ArrX)
    If Dic.Exists(ArrX(J, 1)) Then
        Z = Dic.Item(ArrX(J, 1))
        KQ(Z, 4) = ArrX(J, 6) + KQ(Z, 4)
        KQ(Z, 5) = KQ(Z, 3) - KQ(Z, 4)
        KQ(Z, 6) = KQ(Z, 6) - ArrX(J, 8)
    End If
Next J
If t Then
Sheets("TON KHO").[A10].Resize(t, 1000).ClearContents
Sheets("TON KHO").[A10].Resize(t, 6) = KQ
Sheets("TON KHO").[A10].Resize(t, 6).Borders.LineStyle = 1
End If
Set Dic = Nothing
End Sub
[code]
Kết quả trả về đang để ở vùng A10 :F....
Nếu đã chắc chắn không giờ có việc xuất mà trước đó không có nhập thì đâu cần If Dic.Exists(ArrX(J, 1)) Then.
Còn không chắc thì phải có Else: Dic.Add
 
Nếu đã chắc chắn không giờ có việc xuất mà trước đó không có nhập thì đâu cần If Dic.Exists(ArrX(J, 1)) Then.
Còn không chắc thì phải có Else: Dic.Add
Là tôi cho chạy từng dòng của Sh Xuat, nếu có mặt hàng có trong Dic thì tính thôi, cũng không tính đến trường hợp không có nhập mà vẫn có xuất (trường hợp này thực tế vẫn có thể có.)
Cảm ơn anh đã xem code và chỉ giáo. Trân trọng
 
Nếu cần ghi nhận ngày nhập xuất thì đây:

THẺ KHO VẬT TƯ A95.A95
STTNgàyN/XSO LUONGDON GIATHANH TIENTồn GT
0​
1
9/26/2021​
N
4,000​
15,000.00​
60,000,000.00​
900,000,000,000​
2
9/26/2021​
X
4,000​
15,600.00​
62,400,000.00​
-73,440,000,000​
3
9/27/2021​
N
6,000​
15,300.00​
91,800,000.00​
1,331,100,000,000​
4
9/28/2021​
N
6,000​
16,000.00​
96,000,000.00​
2,867,100,000,000​
 
Web KT

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

Back
Top Bottom