Hướng dẫn cho thấy 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 trong Excel giúp bạn có thể đánh dấu các bản sao bằng mọi cách có thể mà bạn có thể nghĩ ra: có hoặc không có 1st lần xuất hiệ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ộ các 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 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ụ 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 bạn.
Đánh dấu các từ trùng lặp trong một ô bỏ qua chữ hoa chữ thường
Ví dụ này cho thấy cách tô bóng các từ hoặc chuỗi văn bản trùng lặp trong một ô bằng màu chữ đỏ như thể hiện trong hình dưới đây. Xin lưu ý rằng chữ thường và chữ hoa được coi là các ký tự giống nhau. Ví dụ, trái cam, TRÁI CAM và trái cam được coi là cùng một từ.
Mã của macro như sau:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox("Enter the delimiter that separates values in a cell", "Delimiter", ", ") For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " ", Optional 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(words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound(words) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 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 & Delimiter 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 tình huống, chúng ta có xu hướng bỏ qua chữ hoa 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 vẫn quan trọng. 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 và 1-Aa không trùng lặp và không được đánh dấu:
Trong trường hợp này, hãy sử dụng phiên bản mã sau:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox("Enter the delimiter that separates values in a cell", "Delimiter", ", ") For Each Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True) Next End Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter As String = " ", Optional 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(words) - 1 word = words(wordIndex) matchCount = 0 For nextWordIndex = wordIndex + 1 To UBound(words) If word = words(nextWordIndex) Then matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 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 & Delimiter Next End If Next wordIndex 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, hướng dẫn từng bước dưới đây sẽ hướng dẫn bạn một cách thoải mái. 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 với 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:
- Mở sổ làm việc mà bạn muốn đánh dấu các bản sao.
- nhấn Alt + F11 để mở Trình soạn thảo Visual Basic.
- Trên ngăn bên trái, bấm chuột phải ThisWorkbook và chọn Chèn > Mô-đun từ menu ngữ cảnh.
- Dán mã vào cửa sổ Mã.
- Để giữ macro để sử dụng trong tương lai, hãy nhớ lưu sổ làm việc của bạn dưới dạng tệp .xlsm được kích hoạt 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 – tô màu trùng lặp trong một ô bỏ qua chữ cái.
- HighlightDupesCaseSensitive – làm nổi bật sự giả mạo trong một ô xem xét 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 được tải xuống và mở, hãy chạy macro theo cách sau:
- 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 dải ô hoặc nhiều dải ô không liền kề.
- nhấn Alt + F8.
- Chọn macro quan tâm và nhấp vào Chạy.
- Macro sẽ yêu cầu bạn chỉ định dấu phân tách phâ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 bạn, bạn có thể để lại dấu phân cách mặc định hoặc nhập một dấu khác, sau đó bấm OK.
Một lúc sau, tất cả các chuỗi trùng lặp trong các ô đã chọn sẽ được tô bóng bằng màu đỏ (hoặc bất kỳ màu phông chữ nào được đặt trong mã của bạn).
Cách điều chỉnh mã theo nhu cầu của bạn
Với những lưu ý sử dụng này và những kiến thức cơ bản về VBA (hoặc chỉ cần làm theo các hướng dẫn bên dưới), bạn có thể dễ dàng sửa đổi các mã phù hợp với 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 và HighlightDupesCaseInsensitive) gọi HighlightDupeWordsInCell chức năng. Sự khác biệt giữa hai macro ở trên chỉ là ở 3rd tham số (Phân biệt chữ hoa chữ thường) được truyền cho hàm đã nói.
Đố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)
Để các macro hoạt động, mã của HighlightDupeWordsInCell chức năng phải được đặt trên cùng một mô-đun với các 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à nó đượ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 bất kỳ (các) ký tự nào khác làm dấu phân cách được xác định trước.
Màu sắc
Theo mặc định, HighlightDupeWordsInCell chức năng tô màu các bản sao bằng màu 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ị bản sao bằng một màu khác, bạn có thể thay thế vbRed bằng một hằng số khác như vbGreen, vbYellow, vbBlue, v.v. Tdanh sách các hằng số màu được hỗ trợ có thể được tìm thấy đây.
Đó là cách làm nổi bật các từ trùng lặp trong ô 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!
The post Cách đánh dấu văn bản / từ trùng lặp trong ô Excel appeared first on Dịch Vụ kế toán tại Hà Nội | Uy tín - Chất lượng | KetoanMVB.
https://ift.tt/36PftvP Bá Teppi https://ift.tt/3ixeh5D July 22, 2021 at 09:49AM
Không có nhận xét nào:
Đăng nhận xét