So sánh dữ liệu của 2 bảng

Liên hệ QC

Vũ Tuấn Tùng

Thành viên mới
Tham gia
22/6/16
Bài viết
27
Được thích
2
Em chào toàn thể anh chị em trên diễn đàn GPE!
Em có file cần so sánh giữa bảng B và bảng A. Em có tìm 1 số bài nhưng không có nên em mở bài mới nhờ các anh chị viết giúp em đoạn code VBA để chạy nhanh hơn ạ.
Em ví dụ 20 dòng ạ: Nếu dòng Thứ 3 của bảng A có chứa số của dòng Thứ 2 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ và dòng Thứ 4 của bảng A có chứa số của dòng Thứ 3 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ. Em xin cảm ơn ạ.
987.jpg
 

File đính kèm

  • SoSanhDuLieu.xlsb
    9.6 KB · Đọc: 8
Em chào toàn thể anh chị em trên diễn đàn GPE!
Em có file cần so sánh giữa bảng B và bảng A. Em có tìm 1 số bài nhưng không có nên em mở bài mới nhờ các anh chị viết giúp em đoạn code VBA để chạy nhanh hơn ạ.
Em ví dụ 20 dòng ạ: Nếu dòng Thứ 3 của bảng A có chứa số của dòng Thứ 2 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ và dòng Thứ 4 của bảng A có chứa số của dòng Thứ 3 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ. Em xin cảm ơn ạ.
View attachment 272499
Bạn thử code này xem sao.
Nhấn nút "Chạy Code", xem điều gì đã diễn ra ở cột H, I.
Kiếm tra lại bằng cách thay đổi dữ liệu (thêm, bớt, sửa, xóa..)và chạy lại code
 

File đính kèm

  • SoSanhDuLieu.xlsb
    20 KB · Đọc: 25
Upvote 0
Bạn thử code này xem sao.
Nhấn nút "Chạy Code", xem điều gì đã diễn ra ở cột H, I.
Kiếm tra lại bằng cách thay đổi dữ liệu (thêm, bớt, sửa, xóa..)và chạy lại code
Em cảm ơn ạ.
Nếu đổi ngược lại thì tại dòng
"If Val(S(k)) = Val(.Cells(i - 1, j)) Then .Cells(i - 1, j + 2).Interior.Color = 65535 "
Em đổi dấu " = " thay là " <> " thì kết quả cho ra lại chỉ đúng nếu bảng A có 1 số nguyên ạ
 
Upvote 0
Em ví dụ 20 dòng ạ: Nếu dòng Thứ 3 của bảng A có chứa số của dòng Thứ 2 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ và dòng Thứ 4 của bảng A có chứa số của dòng Thứ 3 của bảng B thì ô của Bảng B sẽ tô màu đỏ ạ. Em xin cảm ơn ạ.
Thêm 1 cách khác cho thớt tham khảo
Mã:
Sub ABC()
Dim iRow, i&, j&
With Sheet1
    iRow = .Range("A" & Rows.Count).End(3).Row
    .Columns("F:G").Interior.Pattern = xlNone
    For i = 4 To iRow
        For j = 6 To 7
            If InStr(1, .Cells(i + 1, 2).Value, .Cells(i, j).Value) Then
                .Cells(i, j).Interior.Color = vbRed
            End If
        Next
    Next
End With
End Sub
Bài đã được tự động gộp:

Nếu đổi ngược lại thì tại dòng
"If Val(S(k)) = Val(.Cells(i - 1, j)) Then .Cells(i - 1, j + 2).Interior.Color = 65535 "
Em đổi dấu " = " thay là " <> " thì kết quả cho ra lại chỉ đúng nếu bảng A có 1 số nguyên ạ

Em cảm ơn ạ.
Nếu đổi ngược lại thì tại dòng
"If Val(S(k)) = Val(.Cells(i - 1, j)) Then .Cells(i - 1, j + 2).Interior.Color = 65535 "
Em đổi dấu " = " thay là " <> " thì kết quả cho ra lại chỉ đúng nếu bảng A có 1 số nguyên ạ
Cái này không so thế được. Do tác giả code trên người ta so chính xác từng số. Nên như vậy nó sẽ bôi tất cả các ô là đúng rồi
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn ạ.
Nếu đổi ngược lại thì tại dòng
"If Val(S(k)) = Val(.Cells(i - 1, j)) Then .Cells(i - 1, j + 2).Interior.Color = 65535 "
Em đổi dấu " = " thay là " <> " thì kết quả cho ra lại chỉ đúng nếu bảng A có 1 số nguyên ạ
Đề của bạn là "....Nếu dòng Thứ 3 của bảng A có chứa số của dòng Thứ 2 của bảng B thì ô của Bảng B sẽ tô màu...." cơ mà.
Nếu Val(S(k)<> Val(.Cells(i-1,j) Thì S(k) có nhiều giá trị trong khi Cells((i-1,j) chỉ 1 giá trị thì biết lấy giá nào để ra được kết quả so sánh)ví dụ : bảng A /thứ 3 có 2,4,6,5,8,9,7,1 bảng B có cột F= 1, cột I=3 như vậy Bảng A sẽ có số cuối cùng giống với bảng B . Khi chay code thì sẽ diễn ra (thỏa mãn, thỏa mãn .....và cuối cùng là không thỏa mãn ) ===> thì làm gì,?(ở cột F:sẽ là tô màu, tô màu, tô màu và cuối cùng cũng vẫn là tô màu?-do đã tô màu trước đó.; Cột I sẽ là Tô màu , tô màu......Tô màu)
nếu vẫn là như đề của bạn : bạn thử bằng cách Thay đổi dữ liệu của bảng A và bảng B và chạy code==> kiểm tra lại. chứ bạn thay đổi code thì bạn phải nói rõ mục đích là gì?
 
Upvote 0
Cái này mà cốt kiếc gì. Chỉ bày vẽ.
Dùng conditional formatting
=ISNUMBER(MATCH("*"&F4&"*",$B$4:$B$59,0))
 
Upvote 0
Tô nhiều màu mới đã con mắt nè:
PHP:
Sub ToMauTheoTriTrungHangDuoi()
 Dim Rws As Long, J As Long, VTr As Integer, W As Integer
 
 Rws = Cells(Rows.Count, "G").End(xlUp).Row
 Cells(4, "H").Resize(Rws, 2).Interior.ColorIndex = 2
 For J = 4 To Rws
    For W = 8 To 9
        VTr = InStr(Cells(J + 1, "B").Value, Cells(J, W).Value)
        If VTr Then Cells(J, W).Interior.ColorIndex = 34 + (VTr Mod 10)
    Next W
 Next J
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Cháu thử công thức của chú nó đỏ cả cụm chú ạ. Hay cháu đang sai chỗ nào nhỉ?
Thì bạn đọc lại dữ liệu xem. Chúng rõ ràng là "match" mờ.
Nếu bạn cần nó Match cả cái ngày thứ thì sửa công thức một chút. Hoặc dùng hàm Lookup với điều kiện.
=MATCH(E4&"*"&F4&"*",$A$4:$A$59&$B$4:$B$59,0)
Đây là hàm mảng. Trên bảng tính thì nó cần CSE. Nhưng tôi tin là trên conditional formatting, nó cũng nhận.
 
Upvote 0
Web KT

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

Back
Top Bottom