Đánh dấu các giá trị trùng với những màu khác nhau bằng VBA trong Excel

Danh-dau-cac-gia-tri-trung-voi-nhung-mau-khac-nhau

Đánh dấu các giá trị trùng excel

(Ứng dụng VBA trong Excel) Đối với kế toán chúng ta, thường xuyên phải xử lý các bảng tính dạng như bảng lương excel, bảng thống kê danh sách… Nhu cầu lọc, tìm kiếm và đánh dấu các ô có giá trị trùng nhau là rất cần thiết. Mặc định Excel đã có chức năng Conditional Formatting để tìm và định dạng các giá trị trùng nhau, tuy nhiên chúng chỉ tô 1 màu duy nhất, hoặc các màu khác nhau nhưng lại không rõ rệt và khó phân biệt. Trong bài viết này, tôi xin chia sẻ một cách thú vị để chúng ta có thể Đánh dấu các giá trị trùng với những màu khác nhau bằng VBA trong Excel.

Bước 1: Bật macro cho excel

Bước 2: Lưu file excel dưới dạng Excel macro (*.xlsm)

Bước 3: Ấn ALT+F11 hoặc Developer\View Code để nhập đoạn mã VBA vào

Bước 4: Chạy Macro có tên Highlight_Duplicate và tạo nút bấm để dùng tiếp sau này

Đây là đoạn mã:

Sub Highlight_Duplicate()
Dim ws As Worksheet
Dim cell As Range
Dim myrng As Range
Dim clr As Long
Dim lastcell As Range
Dim i As Long
Dim lastrow As Long

Set ws = ThisWorkbook.ActiveSheet

‘Vung can danh dau gia tri trung nhau
Set myrng = ws.Range(“A1:K” & Range(“C” & ws.Rows.Count).End(xlUp).Row)

With myrng
Set lastcell = .Cells(.Cells.Count)
End With

myrng.Interior.ColorIndex = xlNone
clr = 3

For Each cell In myrng
‘Kiem tra so gia tri trung nhau trong vung, neu co hai gia tri trung nhau tro len thi thuc hien
If Application.WorksheetFunction.CountIf(myrng, cell) > 1 Then
‘Neu la o dau tien cua cac gia tri trung nhau trong vung
If myrng.Find(what:=cell, lookat:=xlWhole, MatchCase:=False, after:=lastcell).Address = cell.Address Then
‘Thiet lap mau
cell.Interior.ColorIndex = clr
clr = clr + 1
i = i + 1
Else
‘Thiet lap mau tu o thu 2 voi cac gia tri trung nhau
cell.Interior.ColorIndex = myrng.Find(what:=cell, lookat:=xlWhole, MatchCase:=False, after:=lastcell).Interior.ColorIndex
End If
End If
Next

‘Lay dong cuoi cung cua vung du lieu
lastrow = Cells(Rows.Count, “A”).End(xlUp).Row
Range(“A” & lastrow + 2).Value = “Tong so co ” & i & ” gia tri trung nhau”
End Sub

Read more: https://www.youtube.com/watch?v=OjfJVy5mvwQ

Chi tiết, với ví dụ trực quan, bạn vui lòng xem Video này:

Chúc bạn thành công!

2 Comments

  1. Tran Anh 20/04/2016

Comments

Lưu ý:
> Không sử dụng từ khóa trong mục "Tên".
> Hãy sử dụng tên thật và địa chỉ email chính xác.
> Vui lòng bình luận bằng tiếng Việt có dấu.
Mọi bình luận trái quy định sẽ bị gỡ bỏ link hoặc xóa bỏ hoàn toàn.