Dò tìm nhiều điều kiện với ngày nhập trước ngày xuất
Em xin chào các anh/chị. Hiện tại em muốn dò tìm để lấy danh mục vật tư qua các sheet, tuy nhiên việc lấy danh mục của em thiếu chính xác do các điều kiện lấy không thỏa mãn, em đang mày mò học code mà không nghĩ được cách lấy sao cho chính xác.
Em có đính kèm file và mô tả thêm trong file, rất mong các anh/chị hỗ trợ giúp đỡ em
Em xin được bổ sung thêm Sheets(VJ) là Sheet nhập và ngày thanh toán là ngày nhập, Sheets(3T) là Sheet xuất
Em xin cám ơn
Đọc code của bạn và dữ liệu trong file thấy nhiều điểm còn mơ hồ
1/ dữ liệu thật được lưu ở mấy sheet? tên gì?
2/ dữ liệu các sheet có được xếp thứ tự theo thời gian?
3/ Số tiền có số âm không?
4/ Các cột số lượng luôn luôn =1?, nếu lớn hơn 1 thì cho ví dụ xử lý
Em xin cám ơn sự hỗ trợ của các anh. Em trình bày lại vấn đề như sau:
Trong file hiện em có 3 Sheet, Sheet VJ –> Sheet nhập, Sheet 3tsoft –> Sheet xuất, Sheet 1 –> Sheet để kiểm tra giữ liệu khi add Dic (Sheet này không liên quan với hai Sheet nhập, xuất)
Đầu tiên em có phát sinh nhập (Sheet VJ), tại Cột O em tạo danh mục vật tư theo "Cột C" PNR dựa theo ngày phát sinh và số thứ tự theo quy luật Mã/năm,tháng,ngày/STT
– Trong cùng một ngày không có phát sinh trùng PNR
Ví Dụ 1: VJ2209020021 –> Tương ứng "VJ = Mã", "220922 = năm, tháng, ngày", "0021 = STT"Tại Sheet xuất (Sheet 3tsoft) em dựa theo "Cột K" PNR và "Cột R" Thành tiền để dò tìm qua Sheet nhập (Sheet VJ) tương ứng với "Cột C" Số vé và "Cột J " tiền trước thuế để lấy danh mục tại "Cột O" Sheet VJ sang "Cột K" Sheet 3tsoft
Tuy nhiên việc lấy dữ liệu như vậy của em không được chính xác do:
– Cùng PNR và khác số tiền sẽ lấy đúng được danh mục
– Cùng PNR và cùng số tiền sẽ bị sai danh mục, do chỉ lấy được danh mục tạo trước, danh mục tạo sau không lấy được
Ví Dụ 2: tại Sheet xuất (3tsoft) hiện tại em đang lọc PNR: K9N773, tương ứng với số tiền "1.338.000, 200.000, 200.000, 200.000, 860.000) em sẽ dò tìm qua Sheet nhập (VJ) lấy được danh mục vật tư tương ứng " VJ2209020021, VJ2209090026, VJ2209090026, VJ2209090026, VJ2209260026" –> Danh mục đúng là " VJ2209020021, VJ2209090026, VJ2209150047, VJ2209220033, VJ2209260026"
Việc dò tìm của em hiện chỉ đúng vơi PNR tương ứng với số tiền khác nhau "1.338.000 và 860.000" Số tiền trùng "200.000" thiếu chính xác do trùng cả PNR và số tiềnEm nhờ các anh/chị giúp em làm sao để lấy được chính xác danh mục vật tư có cùng PNR và cùng số tiền "200.000" như Ví Dụ 2 trên
– Dữ liệu của em được xắp xếp theo thời gian
– Số tiền có âm, tuy nhiên việc âm tiền sẽ đồng nhất cả Nhập và Xuất (cùng âm, hoặc cùng dương)
– Cột số lượng luôn có số lượng là 1, vì có 1 véEm xin gửi lại file đã filter lại
Em xin cám ơn anh/chị rất nhiều
Kiểm tra lại . .
Sub XYZ() 'Lay danh muc tu hang vao ehoadon B1
Dim dic2 As Object, sh3T As Worksheet, shVJ As Worksheet
Dim arr, a3T(), aVJ(), res()
Dim sr3T&, srVJ&, i&, j&, r&, key$, ngay As Date
On Error Resume Next
Set sh3T = Sheets("3tsoft")
Set shVJ = Sheets("VJ")
sh3T.ShowAllData
shVJ.ShowAllData
On Error GoTo 0
a3T = sh3T.Range("A3", sh3T.Range("R" & Rows.Count).End(xlUp)).Value
aVJ = shVJ.Range("C3", shVJ.Range("O" & Rows.Count).End(xlUp)).Value
sr3T = UBound(a3T): srVJ = UBound(aVJ)
ReDim res(1 To sr3T, 1 To 1)
Set dic2 = CreateObject("Scripting.Dictionary")
For i = 1 To srVJ
key = aVJ(i, 1) & "|" & aVJ(i, 8)
If dic2.exists(key) = False Then
dic2.Add key, Array(1, i)
Else
arr = dic2(key)
ReDim Preserve arr(0 To UBound(arr) + 1)
arr(UBound(arr)) = i
dic2(key) = arr
End If
Next i
For i = 1 To sr3T
key = a3T(i, 11) & "|" & a3T(i, 18)
If dic2.exists(key) Then
arr = dic2(key)
ngay = DateValue(Mid(a3T(i, 1), 7, 4) & Mid(a3T(i, 1), 3, 4) & Mid(a3T(i, 1), 1, 2))
For j = arr(0) To UBound(arr)
r = arr(j)
If ngay >= aVJ(r, 2) Then
res(i, 1) = aVJ(r, 13)
arr(0) = j + 1
dic2(key) = arr
Exit For
End If
Next j
End If
Next i
sh3T.Range("J3").Resize(sr3T, 1) = res
Set dic2 = Nothing
End Sub
=IFERROR(INDEX(VJ!$O$3:$O$1959,MATCH(1,(VJ!$D$3:$D$1959=LARGE(IF(B3>IF(L3=VJ!$C$3:$C$1959,VJ!$D$3:$D$1959,""),IF(L3=VJ!$C$3:$C$1959,VJ!$D$3:$D$1959,"")),1))*(VJ!$C$3:$C$1959=L3),0)),"")
Bạn tham khảo thử xem nhé
www.giaiphapexcel.com/diendan/threads/d%C3%B2-t%C3%ACm-nhi%E1%BB%81u-%C4%91i%E1%BB%81u-ki%E1%BB%87n-v%E1%BB%9Bi-ng%C3%A0y-nh%E1%BA%ADp-tr%C6%B0%E1%BB%9Bc-ng%C3%A0y-xu%E1%BA%A5t.163527/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận