Cách đánh dấu văn bản/từ trùng lặp trong ô Excel

  • Chia Sẻ Cái Này
Michael Brown

Hướng dẫn chỉ ra cách đánh dấu các từ hoặc chuỗi văn bản trùng lặp trong một ô bằng VBA.

Định dạng có điều kiện của Excel giúp bạn có thể đánh dấu các từ trùng lặp theo mọi cách có thể: có hoặc không có lần xuất hiện đầu tiên, trong một cột hoặc nhiều cột, các ô trùng lặp liên tiếp và toàn bộ hàng dựa trên các giá trị giống hệt nhau trong một cột chính. Nhưng, như thường lệ, có một "nhưng". Các quy tắc định dạng có điều kiện hoạt động ở cấp độ ô trong khi bạn có thể muốn đánh dấu văn bản trùng lặp thay vì toàn bộ ô. Điều này chỉ có thể được thực hiện với các macro. Ngay cả khi bạn không có bất kỳ kinh nghiệm nào với VBA, xin đừng vội đóng trang này. Tại đây, bạn sẽ tìm thấy các ví dụ về mã sẵn sàng sử dụng và hướng dẫn chi tiết về cách sử dụng chúng trong trang tính của mình.

    Đánh dấu các từ trùng lặp trong một ô bỏ qua chữ hoa/thường

    Ví dụ này cho thấy cách tô đậm các từ hoặc chuỗi văn bản trùng lặp trong một ô bằng màu phông chữ đỏ như trong hình bên dưới. Xin lưu ý rằng chữ thường và chữ in hoa được coi là các ký tự giống nhau. Ví dụ: orange , ORANGE Orange được coi là cùng một từ.

    Các mã của macro như sau:

    Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Nhập dấu phân cách phân tách các giá trị trong một ô", "Dấu phân cách", ", " ) Cho Mỗi Ô TrongApplication.Selection Gọi HighlightDupeWordsInCell(Cell, Delimiter, False ) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Custom Delimiter As String = " ", Tùy chọn CaseSensitive As Boolean = True ) Dim text As String Dim words() As String Dim word As Chuỗi Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound (words) - 1 từ = từ(wordIndex) matchCount = 0 Đối với nextWordIndex = wordIndex + 1 Đến UBound (từ) Nếu từ = từ(nextWordIndex) Sau đó matchCount = matchCount + 1 Kết thúc Nếu tiếp theo nextWordIndex Nếu khớp với Đếm > 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell. Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Dấu phân cách Next End If Next wordIndex End Sub

    Đánh dấu văn bản trùng lặp trong ô phân biệt chữ hoa chữ thường

    Trong hầu hết các trường hợp, chúng ta có xu hướng bỏ qua chữ cái viết thường khi làm việc với các mục nhập văn bản trong Excel. Tuy nhiên, trong một số trường hợp nhất định, trường hợp văn bản có vấn đề. Ví dụ: nếu bạn đang xử lý ID, mật khẩu hoặc các bản ghi khác thuộc loại đó, các chuỗi như 1-AA , 1-aa 1-Aa không trùng lặp và không được đánh dấu:

    Trong trường hợp này,sử dụng phiên bản sau của mã:

    Công khai Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Nhập dấu phân cách phân tách các giá trị trong một ô", "Dấu phân cách", ", " ) Cho mỗi Ô trong ứng dụng.Cuộc gọi lựa chọn HighlightDupeWordsInCell(Cell, Delimiter, True ) Next End Sub Sub Sub HighlightDupeWordsInCell(Cell As Range, Custom Delimiter As String = " ", Tùy chọn CaseSensitive As Boolean = True ) Dim text As String Dim words() As String Dim word As String Dim wordIndex, matchCount, positionInText As Integer If CaseSensitive Then words = Split(Cell.Value, Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (words) To UBound ( từ) - 1 từ = từ(wordIndex) matchCount = 0 Đối với nextWordIndex = wordIndex + 1 Đến UBound (từ) Nếu từ = từ(nextWordIndex) Sau đó matchCount = matchCount + 1 Kết thúc Nếu tiếp theo nextWordIndex Nếu so khớp Đếm > 0 Then text = "" For Index = LBound (words) To UBound (words) text = text & words(Index) If (words(Index) = word) Then Cell. Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Dấu phân cách Next End If Next word Index End Sub

    Cách sử dụng macro để đánh dấu các từ trùng lặp trong Excel

    Nếu bạn là người mới bắt đầu sử dụng VBA, các hướng dẫn từng bước bên dưới sẽ hướng dẫn bạn một cách dễ dàng . Người dùng có kinh nghiệm có thểchỉ cần chọn liên kết tải xuống và bỏ qua phần còn lại :)

    Thêm mã vào sổ làm việc của bạn

    Bạn bắt đầu bằng việc chèn mã của macro vào sổ làm việc Excel của mình. Đây là cách thực hiện:

    1. Mở sổ làm việc nơi bạn muốn đánh dấu các bản sao.
    2. Nhấn Alt + F11 để mở Trình soạn thảo Visual Basic.
    3. Ở ngăn bên trái, nhấp chuột phải vào ThisWorkbook và chọn Chèn > Mô-đun từ menu ngữ cảnh.
    4. Dán mã vào cửa sổ Mã.
    5. Để giữ macro để sử dụng trong tương lai, hãy đảm bảo lưu sổ làm việc của bạn dưới dạng tệp .xlsm có hỗ trợ macro.

    Ngoài ra, bạn có thể tải xuống sổ làm việc mẫu của chúng tôi và chạy macro từ đó. Sổ làm việc mẫu chứa các macro sau:

    • HighlightDupesCaseInsensitive - các sắc thái trùng lặp trong một ô bỏ qua chữ cái viết thường.
    • HighlightDupesCaseSensitive - các điểm nổi bật nhân đôi trong một ô xem xét trường hợp chữ cái.

    Để biết thêm thông tin, vui lòng xem Cách chèn mã VBA trong Excel.

    Chạy macro

    Với mã được thêm vào sổ làm việc của riêng bạn hoặc tệp mẫu của chúng tôi đã tải xuống và mở, hãy chạy macro theo cách này:

    1. Trong trang tính của bạn, hãy chọn các ô mà bạn muốn đánh dấu văn bản trùng lặp. Đây có thể là một hoặc nhiều phạm vi không liền kề.
    2. Nhấn Alt + F8 .
    3. Chọn macro quan tâm và nhấp vào Chạy .

    4. Macro sẽ yêu cầu bạn chỉ định dấu phân cáchphân tách các giá trị trong các ô đã chọn. Dấu phân cách đặt trước (dấu phẩy và dấu cách trong trường hợp của chúng tôi) sẽ tự động xuất hiện trong hộp nhập liệu. Tùy thuộc vào nhu cầu của mình, bạn có thể để nguyên dấu phân cách mặc định hoặc nhập một dấu phân cách khác rồi nhấp vào OK.

    Một lát sau, tất cả các chuỗi trùng lặp trong chuỗi đã chọn các ô sẽ được tô màu đỏ (hoặc bất kỳ màu phông chữ nào được đặt trong mã của bạn).

    Mẹo. Để nhanh chóng xóa các chuỗi trùng lặp trong một ô, bạn có thể sử dụng Xóa các chuỗi con trùng lặp, một trong nhiều công cụ tiết kiệm thời gian có trong Ultimate Suite của chúng tôi.

    Cách điều chỉnh mã theo nhu cầu của bạn

    Với những ghi chú sử dụng này và kiến ​​thức rất cơ bản về VBA (hoặc chỉ cần làm theo hướng dẫn bên dưới), bạn có thể dễ dàng sửa đổi mã theo chính xác nhu cầu của mình.

    Đặt trên cùng một mô-đun

    Như bạn có thể nhận thấy, cả hai macro ( HighlightDupesCaseSensitive HighlightDupesCaseInsensitive ) đều gọi hàm HighlightDupeWordsInCell . Sự khác biệt giữa hai macro ở trên chỉ nằm ở tham số thứ 3 (CaseSensitive) được truyền cho hàm nói trên.

    Đối với tìm kiếm phân biệt chữ hoa chữ thường, nó được đặt thành TRUE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, True)

    Đối với tìm kiếm không phân biệt chữ hoa chữ thường, nó được đặt thành FALSE:

    Call HighlightDupeWordsInCell(Cell, Delimiter, False)

    Để macro hoạt động, mã của hàm HighlightDupeWordsInCell phải được đặt vào mô-đun tương tự nhưmacro.

    Dấu phân cách

    Khi chạy, macro sẽ yêu cầu bạn chỉ định dấu phân cách phân tách các từ/chuỗi trong các ô đã chọn. Dấu phân cách mặc định là dấu phẩy và dấu cách (", ") và được đặt trước trong InputBox:

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

    Trong mã của bạn, bạn có thể tự do sử dụng (các) ký tự khác làm dấu phân cách được xác định trước.

    Màu sắc

    Theo mặc định, hàm HighlightDupeWordsInCell tạo sắc thái trùng lặp bằng màu phông chữ đỏ. Màu được xác định trong dòng này:

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

    Ở đây, vbRed là một loại hằng số màu VBA. Để hiển thị các bản sao có màu khác, bạn có thể thay thế vbRed bằng một hằng số khác, chẳng hạn như vbGreen, vbYellow, vbBlue, v.v. T bạn có thể tìm thấy danh sách các hằng số màu được hỗ trợ tại đây.

    Đó là cách đánh dấu các từ trùng lặp trong các ô Excel. Tôi cảm ơn bạn đã đọc và hy vọng sẽ gặp bạn trên blog của chúng tôi vào tuần tới!

    Các bản tải xuống có sẵn

    Mã ví dụ để đánh dấu các phần trùng lặp trong một ô (tệp .xlsm)

    Cuối cùng Phiên bản đầy đủ chức năng Suite 14 ngày (file .exe)

    Michael Brown là một người đam mê công nghệ chuyên dụng với niềm đam mê đơn giản hóa các quy trình phức tạp bằng các công cụ phần mềm. Với hơn một thập kỷ kinh nghiệm trong ngành công nghệ, anh ấy đã trau dồi kỹ năng của mình trong Microsoft Excel và Outlook, cũng như Google Trang tính và Tài liệu. Blog của Michael dành để chia sẻ kiến ​​thức và chuyên môn của anh ấy với những người khác, cung cấp các mẹo và hướng dẫn dễ thực hiện để cải thiện năng suất và hiệu quả. Cho dù bạn là một chuyên gia dày dạn kinh nghiệm hay người mới bắt đầu, blog của Michael đều cung cấp những hiểu biết có giá trị và lời khuyên thiết thực để tận dụng tối đa những công cụ phần mềm thiết yếu này.