Yêu cầu mình viết trong sheet "xk" đó bạn.
Nội dung thế này:
- file có 4 trang bang tính.
1. trang p.sinh: có số liệu nhập kho, xuất kho hàng hóa của các lần bán trước đây: có các cột Số lượng, mã hàng, mã màu và size; mã tài khoản nợ, tài khoản có….
2. trang DMHH: có danh mục các loại hàng hóa và số lượng ở đầu năm (SLđk) của từng loại hàng
3. trang mau_size: có danh mục các mã màu size: mã mau/size gồm 4 ký tự (2kys tự màu+2 ký tự size; VD: mã "DESL" là màu đen, size L).
4. trang "xk": nhập số liệu xuất kho, khi xuất kho mình muốn kiểm tra xem hàng trong kho có đủ để xuất bán không?.
tức là hôm nay xuất kho thì:
số lượng đầu năm + SL đã nhập thêm từ đầu năm đến hôm nay- SL đã xuất từ đầu năm đến hôm nay phải >=0. nếu < 0 là trong kho không đủ hàng xuất---> đưa ra cảnh báo " thiếu hàng".
Mình đã làm code sau:
Sub kiemtraSL_xuat()
Dim i, j, psno(), psco(), masize_kt(), SL(), SLck()
redim psno(1 to …, 1 to …), …..
'ngay_kt= ngày lập phiếu xuất hàng bán
'Gán số liệu cho biến SL(i, j) Số lượng xuất kho của mã hàng i, màu i , size j
' gán mahang_kt(i), masize_kt(i, j)
'.....
'Gán sldk(i, j) tìm và gán số lượng đầu năm của hàng có mã i, màu i, size j - số liệu đang ở trên trang bảng tính "DMHH"
……….
Range("ct_PO_data").Activate
'ct_PO_data: vùng số liệu xuất kho (vùng bảng tính G7:K14)
For i = 1 To n
'n=số dòng số liệu xuất kho , m= số cột số liệu (số size)
For j = 1 To m
psno(i, j) = Application.SumIfs(Range("Số lượng"), Range("TK nợ"), 156, Range("mã hàng"), mahang_kt(i),
Range("mã màu/size"), masize_kt(i, j), Range("ngày ct"), "<=" & ngay_xk)
'TK nợ=156 là nhập kho; TK có =156 là xuất kho ; ngay_xk= ngày lập phiếu xuất kho hàng hóa
'psno(i,j) được tính dựa vào số liệu trên trang bảng tính "P.sinh"
psco(i, j) = Application.SumIfs(Range("Số lượng"), Range("TK có"), 156, Range("mã hàng"), mahang_kt(i),
Range("mã màu/size"), masize_kt(i, j), Range("ngày ct"), "<=" & ngay_xk)
SLck(i, j) = sldk(i, j) + psno(i, j) - psco(i, j) - SL(i, j)
'tính sô lượng còn trong kho sau khi xuất bán
If SLck(i, j) < 0 Then MsgBox " thiếu hàng xuất kho: " & mahang(i) & "-" & masize_kt(i, j) & "=" & SLck(i, j)
Next j
ActiveCell.Offset(1, 0).Activate
Next i
End Sub
Nhưng code trên tính sai các biến "psno(i,j)" và "psco(i,j)". Nếu không có điều kiện: "Range("ngày ct"), "<=" & ngay_xk" thì nó vẫn tính đúng.
(tính tổng cột số lượng nhưng ngày phải <= ngày xuất bán)
Mình chỉ vướng chỗ này thôi, không hiểu sao khi thêm điều kiện tính tổng này thì nó lại tính sai?
mẫu phiếu xuất kho: các ace giup mình nhé. Thank that nhiều
View attachment 209827