Đối chiếu 2 bảng dữ liệu bằng ngôn ngữ VBA
e muốn đối chiếu 2 bảng dữ liệu Số báo cáo (Sau đây e gọi là bảng A) và Số hệ thống (Sau đây e gọi là bảng B)
cách đối chiếu là:
– lấy từng dòng của bảng A đối chiếu xem có trong bảng B hay không và xuất kết quả là ở cột Kết quả. Nếu không có báo "không có"
– Ngược lại lấy từng dòng của Bảng B đối chiếu so với bảng A và xuất ra kết quả.
Mong mọi người giúp đỡ.
E cám ơn mọi người nhiều ạ
Bạn thử cái sub này nhé.
Sub doichieu()
Dim arr, i As Long, dic As Object, lr As Long, lr1 As Long, arr1, dk As String, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A5:C" & lr).Value2
lr1 = .Range("I" & Rows.Count).End(xlUp).Row
arr1 = .Range("I5:K" & lr1).Value2
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2) & "B1"
If Not dic.exists(dk) Then
dic.Add dk, ""
End If
Next i
For i = 1 To UBound(arr, 1)
dks = arr1(i, 1) & "#" & arr1(i, 2) & "B1"
dk = arr1(i, 1) & "#" & arr1(i, 2) & "B2"
dic.Item(dk) = i
If Not dic.exists(dks) Then
arr1(i, 3) = "Khong co"
End If
Next i
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2) & "B2"
If Not dic.exists(dk) Then
arr(i, 3) = "khong co"
End If
Next i
.Range("A5:C" & lr).Value = arr
.Range("I5:K" & lr1).Value = arr1
End With
End Sub
Muốn chuyên nghiệp thì tự học rồi tự viết và nắm vững công nghệ. Chứ ai đời đi nhờ giúp…xong mai này nó hư hay cần thay đổi gì đó…thì sự chuyên nghiệp lại được đưa lên GPE hả bạn?
Ngộ nhỉ???
Chắc là bạn đó muốn xin code xong học theo code để viết vào bài của mình.Vì em thấy dữ liệu đưa lên vào cùng 1 sheets như thế này là file mẫu rồi.Chứ nếu mà file thực tế nó khác với dữ liệu nhiều nên không muốn dùng công thức.Hihi.Đây là ý kiến riêng em nhé.
e chỉ đang học về ngôn ngữ VBA và muốn hiểu thêm thôi ạ. Chứ ko phải là e đi lấy code này code kia về để sử dụng gì đâu. e cũng chạy được 1 chiều là bảng A so với bảng B, muốn ngược lại thì 2 chuyển qua Sheet khác. nên e muốn làm 1 sheet cho ngắn gọn. nên viết bài hỏi, và so sánh xem như thế nào thôi. Cám ơn mọi người đã góp ý
nếu mà 2 bảng dữ liệu A và B ko cần bằng, tức là 1 trong 2 bảng có nhiều hơn số dòng. thì mình làm như thế nào hả a. e đã test thử trường hợp ko cân bằng. Nó báo lỗi " Run-time error 9…"
Bạn sửa lại nhé.Mình bị lỗi 1 chỗ.
Sub doichieu()
Dim arr, i As Long, dic As Object, lr As Long, lr1 As Long, arr1, dk As String, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("sheet1")
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A5:C" & lr).Value2
lr1 = .Range("I" & Rows.Count).End(xlUp).Row
arr1 = .Range("I5:K" & lr1).Value2
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2) & "B1"
If Not dic.exists(dk) Then
dic.Add dk, ""
End If
Next i
For i = 1 To UBound(arr1, 1)
dks = arr1(i, 1) & "#" & arr1(i, 2) & "B1"
dk = arr1(i, 1) & "#" & arr1(i, 2) & "B2"
dic.Item(dk) = i
If Not dic.exists(dks) Then
arr1(i, 3) = "Khong co"
End If
Next i
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2) & "B2"
If Not dic.exists(dk) Then
arr(i, 3) = "khong co"
End If
Next i
.Range("A5:C" & lr).Value = arr
.Range("I5:K" & lr1).Value = arr1
End With
End Sub
www.giaiphapexcel.com/diendan/threads/%C4%90%E1%BB%91i-chi%E1%BA%BFu-2-b%E1%BA%A3ng-d%E1%BB%AF-li%E1%BB%87u-b%E1%BA%B1ng-ng%C3%B4n-ng%E1%BB%AF-vba.143779/
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