Lọc trùng giữa hai bảng bằng code VBA

Liên hệ QC

thao nguyen01

Thành viên thường trực
Tham gia
8/12/19
Bài viết
214
Được thích
25
Điểm
138
Tuổi
32
Nơi ở
TPHCM
Kính gửi anh/chị trên diễn đàn,

Em muốn lọc dữ liệu trùng nhau giữa 2 bảng bằng code VBA ạ (trùng tên và số hợp đồng ạ). Nếu không có dữ liệu trùng, sẽ hiện thông báo "Không có dữ liệu trùng nhau" ạ. Anh chị xem giúp em ạ. Em cảm ơn nhiều ạ.
 

File đính kèm

  • loc.xlsb
    8.6 KB · Đọc: 26
Khi nào cần nhanh thì xài code này
Mã:
Sub Loc_Trung()
Dim Dic As Object, sArr_1(), sArr_2()
Dim Res(), k As Long, i As Long, ii As Long, tmp As String
Set Dic = CreateObject("scripting.dictionary")
sArr_1 = Range("A2", [A65536].End(3)).Resize(, 2).Value
sArr_2 = Range("D2", [D65536].End(3)).Resize(, 2).Value
ReDim Res(1 To UBound(sArr_2), 1 To 2)
For i = 1 To UBound(sArr_1)
   tmp = CStr(sArr_1(i, 2))
   Dic(tmp) = Empty
Next
For ii = 1 To UBound(sArr_2)
   tmp = CStr(sArr_2(ii, 2))
   If Dic.exists(tmp) Then
      k = k + 1
      Res(k, 1) = sArr_2(ii, 1)
      Res(k, 2) = sArr_2(ii, 2)
   End If
Next
[G2:H10000].ClearContents
If k Then [G2].Resize(k, 2) = Res Else MsgBox "No Data Found", vbInformation
End Sub
Theo lập trình thì code trên hơi cứng nhắc.
Cứng ở chỗ nó luôn luôn nạp range1 vào đít sần và duyệtn range2.
Nếu range1 rất lớn so với range2 thì code hơi bị phí.
Code uyển chuyển hơn thì xét trước bên nào ít dòng hơn thì cho làm range1.
 
Upvote 0
Web KT
Back
Top