Cách tô màu từ trùng lặp trong một ô trong Excel

Trong bài viết này, mình sẽ chia sẻ với các bạn cách tô màu từ trùng lặp trong một ô của Excel.

Trong Excel, có chức năng Conditional Formatting có thể giúp chúng ta định dạng theo điều kiện rất nhiều trường hợp: tô màu các ô có dữ liệu trong một cột, tô màu các ô có dữ liệu trùng lặp trong một vùng, tô màu dựa trên điều kiện trong một cột. Tuy nhiên, việc định dạng theo điều kiện này đang áp dụng cho toàn bộ nội dung trong một ô. Trong trường hợp các bạn muốn tô màu cho những từ trùng lặp của nội dung bên trong một ô (một cell) thì tính năng định dạng theo điều kiện conditional formatting sẽ không đáp ứng được. Nhưng việc này có thể được xử lý bằng VBA Macro trong Excel. Kể cả bạn chưa có kinh nghiệm làm việc với VBA và đây là công việc bạn chỉ cần thực hiện một lần thì bài viết này dành cho bạn, bạn chỉ cần đọc kỹ và làm theo từng bước hướng dẫn chi tiết trong bài là bạn có thể áp dụng đoạn code VBA này rồi.

Cách tô màu từ lặp lại trong ô không phân biệt chữ hoa chữ thường

Ví dụ này hướng dẫn các bạn cách tô màu những từ hoặc chuỗi ký tự trong một ô như hình minh họa. Ở ví dụ này, đoạn code VBA không phân biệt chữ hoa, chữ thường. Ví dụ, orange, ORANGE và Orange được coi như là một từ duy nhất.

tô màu dữ liệu lặp trong một ô Excel

Đoạn code VBA để thực hiện việc này:

Cách tô màu từ lặp lại trong ô có phân biệt chữ hoa chữ thường

Hầu như trong nhiều trường hợp, chúng ta thường tô màu chữ mà không phân biệt chữ hoa, chữ thường. Tuy nhiên, nếu chúng ta muốn phân biệt chữ hoa chữ thường thì cũng có cách như sau:

Dữ liệu lặp lại trong một ô Excel

Đoạn code để xử lý trường hợp này là:

Cách sử dụng Macro để tô màu từ trùng lặp trong Excel

Nếu bạn chưa có kinh nghiệm sử dụng VBA trong Excel, hãy theo hướng dẫn chi tiết sau đây để có thể sử dụng được các đoạn code phía trên. Với những bạn đã học và có kiến thức VBA, các bạn đã biết có thể copy code vào đâu và chạy như thế nào, nên có thể bỏ qua phần hướng dẫn này.

Cách copy code VBA và sử dụng trong Workbook

Chúng ta sẽ bắt đầu bằng cách copy các đoạn code cần thiết vào file Excel như sau:

1. Mở file Excel bạn muốn tô màu chữ trùng lặp
2. Bấm phím tắt ALT + F11 để mở Visual Basic Editor
3. Ở vùng cửa sổ Project – VBA Project bên tay trái, bấm chuột phải vào ThisWorkbook sau đó chọn Insert > Module ở trong menu chuột phải.
4. Dán đoạn code bạn cần sử dụng vào trong Module này.
5. Nếu bạn muốn tiếp tục sử dụng đoạn code này trong tương lai, hãy lưu file Excel này với phần mở rộng có hỗ trợ macro – .xlsm hay .xlsb

Nếu bạn chưa làm được theo hướng dẫn này, hãy theo dõi bài hướng dẫn chạy code Macro trong Excel

Cách chạy Macro VBA trong Excel

Sau khi đã thêm được đoạn code vào trong file Excel của bạn, cách để thực thi Macro VBA này như sau:

1. Trong tài liệu Excel, chọn toàn bộ vùng chưa dữ liệu cần được tô màu theo ý muốn.
2. Bấm phím tắt ALT + F8
3. Chọn Macro muốn chạy sau đó bấm nút Run

4. Đoạn Macro VBA sẽ hỏi bạn sẽ sử dụng dấu ngăn cách nào giữa các giá trị trong ô của bạn. Mặc định, Macro sẽ sử dụng dấu hiệu ngăn cách là “, ” (2 ký tự: dấu phẩy và dấu cách đi liền nhau). Tùy vào dữ liệu và nhu cầu của bạn, bạn có thể chỉnh sửa lại dấu hiệu ngăn cách này và bấm nút OK

Tùy vào lượng dữ liệu của bạn, Macro sẽ mất một vài giây để chạy và những từ trùng lặp sẽ được tô màu đỏ.

Làm thế nào để chỉnh sửa code Macro Excel

Sau khi đã thực hiện được thành công các bước trên, bạn sẽ muốn chỉnh sửa được code Macro một cách hết sức đơn giản. Sau đây là một số thông tin cơ bản bạn có thể áp dụng để chỉnh sửa lại đoạn Macro này.

Phân biệt chữ hoa chữ thường

Nếu các bạn đọc qua một chút Code của macros tên là HighlightDupesCaseSensitiveHighlightDupesCaseInsensitive thì các bạn sẽ nhận thấy, cả hai macros này đều có đoạn

Call HighlightDupeWordsInCell(Cell, Delimiter, <True | False>)

Đối với việc tìm kiếm không phân biệt chữ hoa, chữ thường, thì chúng ta sử dụng:

Call HighlightDupeWordsInCell(Cell, Delimiter, False)

Nếu muốn tìm kiếm và tô màu có phân biệt chữ hoa, chữ thường, thì các bạn dùng:

Call HighlightDupeWordsInCell(Cell, Delimiter, True)

Dấu hiệu ngăn cách giữa các cụm từ trong câu (Delimiter)

Bạn còn nhớ, khi bắt đầu chạy đoạn Macro, thì đoạn sẽ có một cửa sổ hỏi bạn dùng dấu hiệu nào để ngăn cách giữa các cụm từ trong ô? Mặc định đoạn Macro sẽ sử dụng một dấu phẩy theo sau bởi dấu cách (“, “), nếu các bạn muốn thay đổi thiết lập mặc định này, các bạn có thể sửa ở dòng có nội dung:

Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")

Thay đổi màu sắc

Mặc định, các bạn thấy đoạn Macro sẽ tô màu các chữ trùng lặp là màu đỏ. Nếu muốn thay đổi màu này, các bạn có thể tìm đến dòng sau đây:

Cell.Characters(positionInText, Len(word)).Font.Color = vbRed

trong đó, vbRed là hằng số để biểu thị “màu đỏ” mà VBA trong Excel hiểu, ngoài ra, bạn có thể sử dụng vbGreen, vbYellow, vbBlue, …

Như vậy là bạn đã có thể sử dụng code VBA để tô màu nội dung trùng lặp trong Excel. Ngoài việc giải quyết được vấn đề cụ thể trong bài viết này, ngôn ngữ lập trình VBA còn có thể giúp bạn tự động hóa được rất nhiều công việc sử dụng Excel, Word, PowerPoint và các phần mềm khác. Để làm được điều đó, hãy bắt đầu với Khóa học VBA cơ bản cùng Thanh:

VBA101 – Tự động hoá Excel với lập trình VBA cho người mới bắt đầu

VBA201 – Lập trình VBA nâng cao trong Excel

VBA301 – Tự động hóa tương tác với Website, lấy dữ liệu từ Website với VBA

SGS101 – Tự động hóa SAP ERP với VBA


Tác giả: dtnguyen (Nguyễn Đức Thanh)

@ Học Excel Online | DTNguyen.business
· · ·

Khóa học mới xuất bản