NHỜ VIẾT CODE VBA TRÊN NÚT LỆNH ĐỂ TÔ MÀU GIÁ TRỊ TRÙNG GIỮA 2 SHEETS!

Liên hệ QC

dantaichinh

Thành viên hoạt động
Tham gia
7/12/12
Bài viết
130
Được thích
5
Chào mọi người! Mình có file excel gồm 2 sheet. Mình cần viết code VBA trên lệnh nút để đánh dấu màu vàng những phần trùng lặp giá trị giữa 2 trang tính.
Rất mong mọi người giúp mình
mình xin cảm ơn!
 

File đính kèm

  • Đánh dấu màu ô.xlsx
    15 KB · Đọc: 17
D
Chào mọi người! Mình có file excel gồm 2 sheet. Mình cần viết code VBA trên lệnh nút để đánh dấu màu vàng những phần trùng lặp giá trị giữa 2 trang tính.
Rất mong mọi người giúp mình
mình xin cảm ơn!
Dùng thử code này vậy.
Mã:
Sub GPE()
Dim Rng As Range, Rng_Color As Range, aCell As Range
Set Rng = Sheet2.Range("B2:U2")
Set Rng_Color = Sheet1.Range("B2:K9")
Rng_Color.Interior.Pattern = xlNone
    For Each aCell In Rng_Color
        If Application.WorksheetFunction.CountIf(Rng, aCell) > 0 Then
            aCell.Interior.Color = 65535
        End If
    Next aCell
End Sub
 
Upvote 0
D

Dùng thử code này vậy.
Mã:
Sub GPE()
Dim Rng As Range, Rng_Color As Range, aCell As Range
Set Rng = Sheet2.Range("B2:U2")
Set Rng_Color = Sheet1.Range("B2:K9")
Rng_Color.Interior.Pattern = xlNone
    For Each aCell In Rng_Color
        If Application.WorksheetFunction.CountIf(Rng, aCell) > 0 Then
            aCell.Interior.Color = 65535
        End If
    Next aCell
End Sub
rất chuẩn. Cảm ơn bác rất nhiều
 
Upvote 0
Thường thì hàm Match hiệu quả hơn hàm CountIf.
Match chỉ cần tìm tới thì ngừng lại. Trung bình là n/2. Con số này có hể tăng lên theo tỷ số dữ liệu không tìm được.
CountIf ohaur tìm hết dãy. Trung bình là n

Tuy nhiên, Macth sẽ lỗi nếu không tìm được. Vì vậy nên dùng Application thay vì WorksheetFucntion để Application bẫy lỗi giùm.
Rốt lại, vì cũng phải qua một lớp hàm nũa cho nên hiệu quả giảm một chút. Dù vậy, tôi vẫn tin vào hiệu quả của Match.

If Not IsError(Application.Match(trị, mảng, 0)) Then

Theo nguyên tắc "hiệu quả của giải thuật", ít khi có chuyện tuyệt đối.
Hầu hết các trường hợp nhiều giải thuật, hiệu quả của giải thuật tuỳ thuộc vào dạng biến thiên của dữ liệu. Mỗi giải thuật có một điểm mượt theo dạng dữ liệu.

Điển hình bài này, nếu khả năng "tìm không có" rất cao thì hàm SumIf hiệu quả hơn Match.
 
Lần chỉnh sửa cuối:
Upvote 0
Tiêu đề vậy có sai nội 2ui không ta?
NHỜ VIẾT CODE VBA TRÊN NÚT LỆNH ĐỂ TÔ MÀU GIÁ TRỊ TRÙNG GIỮA 2 SHEETS!

PHP:
Sub KiemTrungGiaTri()
Dim Rng As Range, sRng As Range, Cls As Range
Const MyColor As Integer = 35
Set Rng = [c2].CurrentRegion
With Sheet2
    For Each Cls In .[B2].CurrentRegion
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            sRng.Interior.ColorIndex = 34 + (Cls.Column Mod 10)
        Else
            Cls.Interior.ColorIndex = MyColor
        End If
    Next Cls
End With
End Sub

[Vui là chính]
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom