Note: The other languages of the website are Google-translated. Back to English

Làm thế nào để so sánh hai chuỗi để biết sự giống nhau hoặc đánh dấu sự khác biệt trong Excel?

Trong một số trường hợp, bạn có thể chỉ cần so sánh hai ô liền kề của chuỗi và đánh dấu các điểm tương đồng hoặc khác biệt của chúng trong Excel. Bài viết này cung cấp hai phương pháp để bạn đạt được nó.

So sánh hai chuỗi với công thức
So sánh hai chuỗi về sự giống nhau hoặc đánh dấu sự khác biệt với mã VBA


So sánh hai chuỗi với công thức

Như ảnh chụp màn hình bên dưới được hiển thị, nếu bạn chỉ muốn biết liệu các chuỗi được so sánh có khớp hay không, bạn có thể áp dụng công thức sau.

1. Chọn một ô trống C2, nhập công thức = CHÍNH XÁC (A2, B2) vào Thanh công thức, rồi nhấn phím Đi vào. Xem ảnh chụp màn hình:

Chú thích: Trong công thức, A2 và B2 là các ô chứa các chuỗi so sánh.

2. Tiếp tục chọn ô kết quả, sau đó kéo Fill Handle đến các ô cho đến khi nhận được tất cả các kết quả được so sánh.

Kết quả FALSE có nghĩa là các chuỗi được so sánh là khác nhau và kết quả TRUE cho biết hai chuỗi được so sánh là khớp. Xem ảnh chụp màn hình:


So sánh hai chuỗi về sự giống nhau hoặc đánh dấu sự khác biệt với mã VBA

Nếu bạn muốn so sánh hai chuỗi và làm nổi bật sự giống nhau hoặc khác nhau giữa chúng. Mã VBA sau đây có thể giúp bạn.

1. nhấn Khác + F11 các phím đồng thời để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó sao chép và dán đoạn mã sau vào cửa sổ Mã.

Mã VBA: So sánh hai chuỗi cột để biết sự giống nhau hoặc đánh dấu sự khác biệt

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Len(xCell1.Value2)
            For J = 1 To xLen
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
            Next J
            If Not xDiffs Then
                If J <= Len(xCell2.Value2) And J > 1 Then
                    xCell2.Characters(1, J - 1).Font.Color = vbRed
                End If
            Else
                If J <= Len(xCell2.Value2) Then
                    xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                End If
            End If
        End If
    Next
    Application.ScreenUpdating = True
End Sub

3. Nhấn nút F5 phím để chạy mã. Trước hết Kutools cho Excel hộp thoại, chọn cột đầu tiên của chuỗi văn bản bạn cần so sánh, sau đó bấm vào OK .

4. Sau đó, thứ hai Kutools cho Excel hộp thoại bật lên, vui lòng chọn chuỗi cột thứ hai và nhấp vào OK .

5. Cuối cùng Kutools cho Excel hộp thoại, nếu bạn muốn so sánh các chuỗi để tìm sự giống nhau, hãy nhấp vào cái nút. Và để làm nổi bật sự khác biệt của các chuỗi được so sánh, hãy nhấp vào Không cái nút. Xem ảnh chụp màn hình:

Sau đó, bạn có thể xem kết quả so sánh như hình ảnh chụp màn hình bên dưới.


Các bài liên quan:


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (19)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thưa ông, Cảm ơn rất nhiều vì mã VBA của bạn. Nó rất hữu ích. Trên thực tế, tôi không có bất kỳ kiến ​​thức nào về mã hóa. Vì vậy, ngay cả khi sửa đổi một phần nhỏ của mã hóa theo yêu cầu của tôi, tôi bất lực, tôi có một yêu cầu về mã hóa này để làm cho nó hiệu quả hơn và thân thiện hơn với người dùng. Liệu bạn có thể giúp mình không?? Mục tiêu chính của mã hóa ở trên là tìm và làm nổi bật sự khác biệt giữa dữ liệu trong hai cột để dễ dàng tham khảo. Tuy nhiên, việc mã hóa này hơi phức tạp vì có liên quan đến khách quan. Thật vậy, nó đang xem xét các "khoảng trắng" giữa nội dung và nó làm nổi bật toàn bộ dữ liệu mặc dù các chuỗi giống nhau. Vì vậy, nếu chúng ta có thể so sánh dữ liệu không có khoảng trắng, thì chúng ta có thể lọc phần dữ liệu được đánh dấu. Ngoài ra, thay vì chỉ đánh dấu các chuỗi không tương tự, nó làm nổi bật toàn bộ dữ liệu ngay từ chuỗi khác nhau đầu tiên đến dữ liệu cho đến cuối ô. Do đó, tôi muốn kết luận yêu cầu của mình dưới 2 điểm. 1) vui lòng chỉnh sửa mã để so sánh các ô mà không tính đến khoảng cách 2) vui lòng chỉnh sửa mã theo cách sao cho nó chỉ có thể làm nổi bật các chuỗi khác nhau nhưng không làm nổi bật toàn bộ para từ điểm chuỗi khác đầu tiên. Cảm ơn rất nhiều vì sự giúp đỡ của bạn. Trân trọng, Surya
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
tôi có yêu cầu tương tự như suryateja.
2) vui lòng chỉnh sửa mã theo cách sao cho nó chỉ có thể làm nổi bật các chuỗi khác nhau nhưng không làm nổi bật toàn bộ para từ điểm chuỗi khác đầu tiên.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Liều mã trên không hoạt động nếu bất kỳ ô nào chứa công thức.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cần biết cách tôi có thể xác định các chuỗi có cùng định dạng văn bản để tôi có thể liên kết một acct với tất cả các chuỗi đó. Ví dụ: nếu tôi có 1,000 ô có nội dung khác nhau, tôi muốn tách các ô có định dạng 042-XXX-XX-00 để liên kết chúng với một acct #.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào
Làm cách nào để sao chép Cột1 bên cạnh Cột2 nếu một hoặc nhiều mục trong Cột 1 giống / giống với một hoặc nhiều mục trong Cột2?
Tôi xin lỗi nhưng tôi đã làm việc với Excel VBA được một thời gian và tôi không thể tìm thấy câu trả lời cho câu hỏi này.
Cảm ơn bạn trước cho câu trả lời của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào
Làm cách nào để sao chép Cột1 bên cạnh Cột2 nếu một hoặc nhiều mục trong Cột 1 giống / giống với một hoặc nhiều mục trong Cột2?
Tôi xin lỗi nhưng tôi đã làm việc với Excel VBA được một thời gian và tôi không thể tìm thấy câu trả lời cho câu hỏi này.
Cảm ơn bạn trước cho câu trả lời của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kịch bản rất hữu ích! cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm thế nào tôi có thể nhận được số chênh lệch giữa hai chuỗi?

Ví dụ: "123456" và "213456" ==> chênh lệch 2
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chỉ muốn nói lời cảm ơn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã rất hy vọng điều này sẽ thành công. Nó dường như để so sánh toàn bộ các ô chứ không phải các ký tự trong các ô. Đơn giản chỉ cần so sánh Candy ở ô này với Andy ở ô khác thì không tìm thấy điểm tương đồng nào. Và khi tôi so sánh về sự khác biệt, toàn bộ tên Andy được tô màu đỏ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Trước hết..THANKS Hãy mở rộng người dùng Office để có mã tốt !!

Hãy thử sửa đổi này. Nó chỉ đơn giản là mở rộng vòng lặp kiểm tra mỗi ký tự để bao gồm định dạng màu phông chữ, thêm "Đen" mặc định và cũng so sánh các ký tự với chiều dài nhất của hai ô được so sánh.

Sub highlight()
    Dim xRg1 As Range
    Dim xRg2 As Range
    Dim xTxt As String
    Dim xCell1 As Range
    Dim xCell2 As Range
    Dim I As Long
    Dim J As Integer
    Dim xLen As Integer
    Dim xDiffs As Boolean
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg1 = Application.InputBox("Range A:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg1 Is Nothing Then Exit Sub
    If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
lTwo:
    Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
    If xRg2 Is Nothing Then Exit Sub
    If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
        MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lTwo
    End If
    If xRg1.CountLarge <> xRg2.CountLarge Then
       MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
       GoTo lTwo
    End If
    xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
    Application.ScreenUpdating = False
    xRg2.Font.ColorIndex = xlAutomatic
    For I = 1 To xRg1.Count
        Set xCell1 = xRg1.Cells(I)
        Set xCell2 = xRg2.Cells(I)
        If xCell1.Value2 = xCell2.Value2 Then
            If Not xDiffs Then xCell2.Font.Color = vbRed
        Else
            xLen = Application.WorksheetFunction.Max(Len(xCell1.Value2), Len(xCell2.Value2))
            For J = 1 To xLen
                xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbBlack
                If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then
                    If Not xDiffs Then
                        If J <= Len(xCell2.Value2) And J > 1 Then
                            xCell2.Characters(1, J - 1).Font.Color = vbRed
                        End If
                    Else
                        If J <= Len(xCell2.Value2) Then
                            xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
                        End If
                    End If
                End If
            Next J
        End If
    Next
    Application.ScreenUpdating = True
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
CẢM ƠN! đây chỉ là những gì tôi cần!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Để tránh bất kỳ rắc rối nào của mã này với các khoảng trắng phải ở giá trị ASCII 32 hoặc 160 (đặc biệt nếu chuỗi đến từ HTML), bạn cần bao gồm dòng kiểm tra 46 trong vòng lặp if endif như bên dưới:
Nếu Không ((Asc (xCell1.Characters (J, 1) .Text) = 32 Hoặc Asc (xCell1.Characters (J, 1) .Text) = 160) Và (Asc (xCell2.Characters (J, 1) .Text) ) = 32 Hoặc Asc (xCell2.Characters (J, 1) .Text) = 160)) Sau đó
(dòng 46 Nếu không phải xCell1.Characters (J, 1) .Text = xCell2.Characters (J, 1) .Text Then Exit For)
Cuối Nếu

Tuy nhiên, cảm ơn vì mã.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Làm thế nào để tôi thêm điều này đúng cách? Tôi gặp lỗi khi cố gắng thay thế dòng 46. Cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
trong ví dụ của bạn, các từ "hãy thử" tương tự nhưng mã của bạn không thể làm nổi bật nó.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Confrontando la cella VIA ROMA 1 con la cella VIA RROMA 1 il programmma evidenzia in rosso sia RROMA che 1. Non si può ticket in modo che evidenzi solo la lettera diva e quindi R? Grazie
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Làm cách nào tôi có thể chỉnh sửa mã sao cho mã sẽ so sánh 2 cột và làm nổi bật sự khác biệt trong cả hai cột?
Ví dụ:
Cột 1
A1,A2,A3,A4: Đánh dấu A1 & A3
Cột 2
A2,A4,A5,A6,A7: Highlight A5,A6,A7
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Lala,
Sẽ thật tuyệt nếu bạn có thể tải lên ảnh chụp màn hình dữ liệu của mình và kết quả bạn muốn nhận.
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL