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.
Xem nhanh
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.
Đoạn code VBA để thực hiện việc này:
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:
Đoạn code để xử lý trường hợp này là:
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.
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
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 đỏ.
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.
Nếu các bạn đọc qua một chút Code của macros tên là HighlightDupesCaseSensitive và HighlightDupesCaseInsensitive 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)
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", ", ")
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