Trong môi trường làm việc hiện đại, Excel không chỉ là một công cụ tính toán đơn thuần mà còn là một nền tảng mạnh mẽ để quản lý, phân tích và xử lý dữ liệu. Một trong những nhu cầu cơ bản và thường gặp nhất của người dùng là so sánh hai ô chứa văn bản (text) để xác định sự khác biệt, trùng khớp hoặc thực hiện các hành động tiếp theo dựa trên kết quả so sánh. Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn chi tiết, đầy đủ và thực tiễn về cách so sánh hai ô trong Excel, bao gồm:
- Các hàm cơ bản để so sánh văn bản (EXACT, =, <>, LEFT, RIGHT, MID, FIND, SEARCH, LEN, SUBSTITUTE, REPLACE, TRIM, CLEAN, TEXT, VALUE, CONCATENATE, &,…).
- Sử dụng Conditional Formatting (định dạng có điều kiện) để hiển thị ngay các ô trùng hoặc khác nhau.
- Áp dụng công cụ “Remove Duplicates”, “Advanced Filter”, “Power Query” cho việc so sánh hàng loạt dữ liệu.
- Kỹ thuật so sánh không phân biệt chữ hoa/thường, bỏ dấu, bỏ khoảng trắng thừa, và các biến thể Unicode (tiếng Việt).
- Ví dụ thực tế: so sánh danh sách khách hàng, mã sản phẩm, địa chỉ email, mô tả sản phẩm…
- Mẹo tối ưu hiệu suất khi làm việc với hàng triệu dòng dữ liệu.
- Cách tự động hoá quy trình bằng VBA (macro) và Power Automate.
Có thể bạn quan tâm: Excel Color Based On Value: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Hiểu rõ nhu cầu so sánh văn bản trong Excel
Trước khi đi sâu vào các công thức và công cụ, chúng ta cần xác định rõ mục tiêu của việc so sánh:
| Mục tiêu | Mô tả | Phương pháp thường dùng |
|---|---|---|
| Kiểm tra trùng lặp | Xác định ô nào có cùng nội dung với ô khác | =A2=B2, EXACT, Conditional Formatting |
| So sánh không phân biệt hoa/thường | “Apple” và “apple” được coi là giống nhau | =LOWER(A2)=LOWER(B2) hoặc EXACT(LOWER(A2),LOWER(B2)) |
| Bỏ dấu, bỏ khoảng trắng | “Hà Nội ” vs “Ha Nội” | TRIM, SUBSTITUTE, CLEAN, PROPER |
| Tìm phần chung hoặc khác nhau | Lấy phần chung hoặc phần khác biệt | LEFT, RIGHT, MID, FIND, SEARCH |
| So sánh theo mẫu (wildcard) | Kiểm tra ô chứa một chuỗi con | COUNTIF, SEARCH |
| Kiểm tra độ dài | So sánh độ dài chuỗi | LEN |
| Kiểm tra số nguyên hoặc ngày | Chuyển đổi văn bản sang số/ngày | VALUE, DATEVALUE, TEXT |
Việc lựa chọn công cụ phù hợp sẽ giúp bạn tiết kiệm thời gian, giảm lỗi và tăng tính tự động trong quy trình làm việc.
Có thể bạn quan tâm: Học Excel Cho Người Mới Bắt Đầu: Hướng Dẫn Toàn Diện Từ Cơ Bản Đến Nâng Cao
2. Các hàm cơ bản để so sánh hai ô văn bản
2.1. Hàm so sánh trực tiếp: = và <>
- Cú pháp:
=A1=B1trả vềTRUEnếu nội dung giống hệt,FALSEnếu khác. - Không phân biệt chữ hoa/thường? Không, hàm này phân biệt. Để bỏ qua, dùng
LOWERhoặcUPPER. - Ví dụ:
- Ô A2 chứa “Hello”, B2 chứa “hello”.
=A2=B2→FALSE. =LOWER(A2)=LOWER(B2)→TRUE.
2.2. Hàm EXACT
- Mô tả: So sánh hai chuỗi chính xác (phân biệt hoa/thường).
- Cú pháp:
=EXACT(text1, text2). - Ưu điểm: Dễ đọc, trả về
TRUE/FALSE. - Ví dụ:
=EXACT("Data","data")→FALSE.
2.3. Hàm TRIM + CLEAN + SUBSTITUTE
Đôi khi dữ liệu nhập vào có khoảng trắng thừa, ký tự không hiển thị (ASCII 0-31) hoặc dấu tiếng Việt. Để chuẩn hoá:
=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," ")))
CHAR(160)là dấu cách không phá vỡ (non‑breaking space).CLEANloại bỏ ký tự không hiển thị.TRIMxóa khoảng trắng đầu/cuối và giảm nhiều khoảng trắng liên tiếp thành một.
Sau khi chuẩn hoá, bạn có thể so sánh:
=EXACT(TRIM(CLEAN(A2)), TRIM(CLEAN(B2)))
2.4. So sánh không phân biệt dấu (tiếng Việt)
Excel không có hàm built‑in để bỏ dấu. Tuy nhiên, bạn có thể tạo một hàm tùy chỉnh (UDF) trong VBA hoặc dùng công thức lồng nhau:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( LOWER(A2), "á","a"),"à","a"),"ả","a"),"ã","a"),"ạ","a")
Lặp lại cho các nguyên âm khác (â, ă, ê, ô, ơ, ú, ư, í, ó, etc.). Đối với hàng ngàn ký tự, việc này sẽ dài, vì vậy VBA thường là lựa chọn tốt hơn.
2.4.1. VBA: Hàm RemoveDiacritics
Function RemoveDiacritics(str As String) As String Dim i As Long, ch As String, s As String Dim arrAccents As Variant, arrPlain As Variant arrAccents = Array("á","à","ả","ã","ạ","â","ă","ấ","ầ","ẩ","ẫ","ậ","ắ","ằ","ẳ","ẵ","ặ","đ","é","è","ẻ","ẽ","ẹ","ê","í","ì","ỉ","ĩ","ị","ó","ò","ỏ","õ","ọ","ô","ơ","ú","ù","ủ","ũ","ụ","ư","ý","ỳ","ỷ","ỹ","ỵ") arrPlain = Array("a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","a","d","e","e","e","e","e","e","i","i","i","i","i","o","o","o","o","o","o","o","u","u","u","u","u","u","y","y","y","y","y") s = LCase(str) For i = LBound(arrAccents) To UBound(arrAccents) s = Replace(s, arrAccents(i), arrPlain(i)) Next i RemoveDiacritics = s
End Function
Sau khi lưu macro, bạn dùng:
=EXACT(RemoveDiacritics(A2), RemoveDiacritics(B2))
2.5. Hàm LEFT, RIGHT, MID, LEN
Đôi khi bạn chỉ cần so sánh phần đầu hoặc phần cuối của chuỗi.
- So sánh 5 ký tự đầu:
=LEFT(A2,5)=LEFT(B2,5) - So sánh 3 ký tự cuối:
=RIGHT(A2,3)=RIGHT(B2,3) - So sánh ký tự từ vị trí thứ 3, độ dài 4:
=MID(A2,3,4)=MID(B2,3,4)
Kết hợp với LEN để tránh lỗi khi chuỗi ngắn hơn độ dài muốn so sánh:
=IF(LEN(A2)>=5,LEFT(A2,5),"")=IF(LEN(B2)>=5,LEFT(B2,5),"")
2.6. Hàm FIND và SEARCH
FINDphân biệt chữ hoa/thường, trả về vị trí bắt đầu của chuỗi con.SEARCHkhông phân biệt hoa/thường.
Kiểm tra A2 có chứa B2?
=ISNUMBER(FIND(B2,A2)) // phân biệt
=ISNUMBER(SEARCH(B2,A2)) // không phân biệt
Nếu muốn trả về TRUE/FALSE:
=IF(ISNUMBER(SEARCH(B2,A2)),TRUE,FALSE)
2.7. Hàm COUNTIF và COUNTIFS (wildcard)
Bạn có thể dùng COUNTIF để kiểm tra có tồn tại một chuỗi trong một dải ô.
- Wildcard
(bất kỳ ký tự nào) và?(một ký tự). - Ví dụ: Kiểm tra A2 có chứa “ABC” ở bất kỳ vị trí nào trong dải B2:B100:
=COUNTIF(B2:B100,""&A2&"")>0
2.8. Hàm TEXT, VALUE, DATEVALUE
Khi dữ liệu là số hoặc ngày dưới dạng văn bản, chuyển đổi trước khi so sánh:
=VALUE(A2)=VALUE(B2) // so sánh số
=DATEVALUE(A2)=DATEVALUE(B2) // so sánh ngày
Nếu dữ liệu ngày có định dạng khác nhau (dd/mm/yyyy vs mm/dd/yyyy), dùng TEXT để chuẩn hoá:
=TEXT(A2,"yyyy-mm-dd")=TEXT(B2,"yyyy-mm-dd")
Có thể bạn quan tâm: Cách Chuyển Dòng Thành Cột Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Định dạng có điều kiện (Conditional Formatting) để hiển thị kết quả so sánh
3.1. Đánh dấu các ô trùng nhau
- Chọn dải ô cần so sánh, ví dụ
A2:A100. - Vào Home → Conditional Formatting → New Rule → Use a formula to determine which cells to format.
- Nhập công thức:
=COUNTIF($B$2:$B$100, A2)>0
- Chọn màu nền (ví dụ: xanh lá).
Kết quả: mọi ô trong cột A có nội dung xuất hiện trong cột B sẽ được tô màu.
3.2. Đánh dấu các ô không trùng
Thay công thức thành:
=COUNTIF($B$2:$B$100, A2)=0
3.3. So sánh từng cặp A2 vs B2 (cùng hàng)
- Chọn
A2:B100. - Công thức:
=$A2<>$B2
- Định dạng màu nền đỏ → các ô khác nhau sẽ hiển thị.
3.4. Định dạng “khác nhau nhưng chỉ một ký tự”
Bạn muốn phát hiện sự sai lệch chỉ 1 ký tự (ví dụ lỗi gõ). Dùng công thức:
=LEN(A2)=LEN(B2) AND (SUMPRODUCT(--(MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)<>MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1)))=1)
Lưu ý: Công thức trên là mảng, cần nhập bằng
Ctrl+Shift+Entertrong Excel 2026 trở về trước; trong Excel 365/2026 không cần.
4. So sánh hàng loạt dữ liệu: Remove Duplicates, Advanced Filter, Power Query
4.1. Remove Duplicates

Có thể bạn quan tâm: Excel Column Number To Letter: Hướng Dẫn Chi Tiết, Thuật Toán Và Ứng Dụng Thực Tiễn
- Cách nhanh: Chọn cột (hoặc nhiều cột), vào Data → Remove Duplicates.
- Giới hạn: chỉ loại bỏ trùng lặp, không cung cấp danh sách “khác nhau”.
4.2. Advanced Filter – Trích xuất các giá trị duy nhất & không trùng
- Chọn dữ liệu.
- Data → Advanced.
- Chọn Copy to another location, tick Unique records only.
Kết quả là danh sách không trùng lặp.
4.3. Power Query (Get & Transform)
Power Query là công cụ mạnh mẽ để so sánh, hợp nhất, và làm sạch dữ liệu lớn.
Bước 1: Load dữ liệu
- Data → Get Data → From Table/Range (đối với mỗi bảng dữ liệu).
Bước 2: Chuẩn hoá dữ liệu
- Transform → Format → Trim, Clean, Lowercase.
- Add Column → Custom Column để tạo cột “NoDiacritics” bằng hàm
Text.RemoveDiacritics(trong Power Query M ngôn ngữ, có sẵn).
Bước 3: Merge Queries (Join)
- Home → Merge Queries.
- Chọn cột chuẩn hoá (ví dụ: “NoDiacritics”) ở cả hai bảng, chọn Join Kind = Inner (để lấy trùng) hoặc Left Anti (để lấy không trùng).
Bước 4: Load kết quả
- Close & Load → bảng mới trong Excel.
Power Query độc lập với kích thước dữ liệu (có thể xử lý hàng triệu dòng) và cho phép tự động hoá (Refresh) khi dữ liệu thay đổi.
5. Kỹ thuật so sánh không phân biệt chữ hoa/thường, bỏ dấu và khoảng trắng
5.1. Công thức tổng hợp
Giả sử A2 và B2 chứa văn bản tiếng Việt có dấu, khoảng trắng thừa, và có thể khác chữ hoa/thường. Công thức chuẩn hoá:
=EXACT( TRIM( SUBSTITUTE( LOWER( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( A2, "á","a"),"à","a"),"ả","a"),"ã","a"),"ạ","a"),"â","a"),"ă","a"),"đ","d"),"é","e"),"è","e"),"ẻ","e"),"ẽ","e"),"ẹ","e"),"ê","e"),"í","i"),"ì","i"),"ỉ","i"),"ĩ","i"),"ị","i"),"ó","o"),"ò","o"),"ỏ","o"),"õ","o"),"ọ","o"),"ô","o"),"ơ","o"),"ú","u"),"ù","u"),"ủ","u"),"ũ","u"),"ụ","u"),"ư","u"),"ý","y"),"ỳ","y"),"ỷ","y"),"ỹ","y"),"ỵ","y") ) ) )," ","") ) ), TRIM( SUBSTITUTE( LOWER( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( B2, "á","a"),"à","a"),"ả","a"),"ã","a"),"ạ","a"),"â","a"),"ă","a"),"đ","d"),"é","e"),"è","e"),"ẻ","e"),"ẽ","e"),"ẹ","e"),"ê","e"),"í","i"),"ì","i"),"ỉ","i"),"ĩ","i"),"ị","i"),"ó","o"),"ò","o"),"ỏ","o"),"õ","o"),"ọ","o"),"ô","o"),"ơ","o"),"ú","u"),"ù","u"),"ủ","u"),"ũ","u"),"ụ","u"),"ư","u"),"ý","y"),"ỳ","y"),"ỷ","y"),"ỹ","y"),"ỵ","y") ) ) )," ","") ) )
)
Giải thích:
–LOWER→ chuyển về chữ thường.
–SUBSTITUTE→ thay thế từng ký tự có dấu bằng ký tự không dấu.
–TRIM→ xóa khoảng trắng đầu/cuối.
–SUBSTITUTE(...," ","")→ xóa toàn bộ khoảng trắng (nếu muốn so sánh không có bất kỳ khoảng trắng nào).
Bạn có thể rút gọn bằng cách đặt danh sách thay thế vào một bảng phụ và dùng VLOOKUP/XLOOKUP trong một hàm tùy chỉnh.
5.2. Sử dụng hàm TEXTJOIN và mảng để thay thế nhanh
Nếu Excel 365 hỗ trợ dynamic arrays, bạn có thể viết:
=LET( accents, {"á","à","ả","ã","ạ","â","ă","đ","é","è","ẻ","ẽ","ẹ","ê","í","ì","ỉ","ĩ","ị","ó","ò","ỏ","õ","ọ","ô","ơ","ú","ù","ủ","ũ","ụ","ư","ý","ỳ","ỷ","ỹ","ỵ"}, plain, {"a","a","a","a","a","a","a","d","e","e","e","e","e","e","i","i","i","i","i","o","o","o","o","o","o","o","u","u","u","u","u","u","y","y","y","y","y"}, norm, LAMBDA(txt, LET( t, LOWER(txt), seq, SEQUENCE(ROWS(accents)), REPLACE(t, FIND(accents, t), 1, plain) // không thực tế, chỉ minh họa ) ), EXACT(TRIM(norm(A2)), TRIM(norm(B2)))
)
Tuy nhiên, hàm REPLACE không hoạt động như trên; nên VBA vẫn là cách thực tế hơn cho dữ liệu lớn.
6. Ví dụ thực tiễn
6.1. So sánh danh sách khách hàng
Giả sử bạn có hai sheet: KhachHang_NhanVien và KhachHang_Import. Mỗi sheet có cột Tên khách hàng (có dấu, hoa/thường khác nhau). Bạn muốn:
- Xác định khách hàng trùng (để tránh import lại).
- Liệt kê khách hàng mới (chỉ xuất hiện trong file import).
Bước 1: Chuẩn hoá cả hai cột:
=TRIM(LOWER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"á","a"),"é","e"),"đ","d")))
Sao chép công thức vào cột phụ Tên chuẩn.
Bước 2: Dùng VLOOKUP hoặc XLOOKUP:
=IFERROR(XLOOKUP(C2, KhachHang_NhanVien!$C$2:$C$5000, KhachHang_NhanVien!$C$2:$C$5000, "Mới"),"Mới")
Kết quả: trả về “Mới” nếu không tìm thấy, ngược lại trả về tên khách hàng trùng.
Bước 3: Đánh dấu bằng Conditional Formatting:
- Công thức:
=$D2="Mới"→ nền màu cam.
6.2. So sánh mã sản phẩm (không phân biệt hoa/thường, bỏ ký tự “-”)
Mã sản phẩm có dạng AB-123-XYZ. Khi nhập thủ công, người dùng có thể bỏ dấu “-”. Để so sánh:
=SUBSTITUTE(UPPER(A2),"-","")=SUBSTITUTE(UPPER(B2),"-","")
Nếu muốn hiển thị “Khớp”/“Không khớp”:
=IF(SUBSTITUTE(UPPER(A2),"-","")=SUBSTITUTE(UPPER(B2),"-",""),"Khớp","Không khớp")
6.3. So sánh địa chỉ email (bỏ dấu “+” và phần sau khi “+” trong Gmail)
=LEFT(LOWER(A2),FIND("@",A2)-1)
Sau đó loại bỏ phần “+”:
=LEFT(LEFT(LOWER(A2),FIND("@",A2)-1), FIND("+",LEFT(LOWER(A2),FIND("@",A2)-1)&"+")-1) & MID(A2,FIND("@",A2),LEN(A2))
So sánh:
=EXACT(ProcessedEmailA, ProcessedEmailB)
6.4. So sánh mô tả sản phẩm để phát hiện “copy‑paste” gần giống
Bạn có thể dùng độ dài chuỗi và số ký tự khác nhau:
=LEN(A2)-LEN(SUBSTITUTE(A2,B2,"")) // số lần B2 xuất hiện trong A2
Hoặc dùng Levenshtein distance (khoảng cách chỉnh sửa) bằng VBA để tính độ tương đồng. Nếu khoảng cách ≤2, coi là “gần giống”.
Function Levenshtein(s As String, t As String) As Long Dim d() As Long, i As Long, j As Long, cost As Long Dim n As Long: n = Len(s) Dim m As Long: m = Len(t) ReDim d(0 To n, 0 To m) For i = 0 To n: d(i, 0) = i: Next i For j = 0 To m: d(0, j) = j: Next j For i = 1 To n For j = 1 To m If Mid(s, i, 1) = Mid(t, j, 1) Then cost = 0 Else cost = 1 d(i, j) = Application.Min(d(i - 1, j) + 1, d(i, j - 1) + 1, d(i - 1, j - 1) + cost) Next j Next i Levenshtein = d(n, m)
End Function
Sử dụng:
=Levenshtein(A2,B2)<=2
7. Tối ưu hiệu suất khi so sánh hàng triệu dòng
Khi dữ liệu lớn, việc dùng công thức mảng phức tạp sẽ làm Excel chậm. Các gợi ý:
| Phương pháp | Khi nào dùng | Lợi ích |
|---|---|---|
| Power Query | Dữ liệu > 100.000 hàng | Xử lý nhanh, không làm tắc Excel. |
| VBA + Dictionary | So sánh 2 danh sách lớn, cần tìm nhanh | O(1) tra cứu, giảm thời gian từ phút xuống giây. |
| Helper Column + INDEX/MATCH | Khi muốn trả về giá trị tương ứng | Tránh công thức mảng. |
| PivotTable + Distinct Count | Đếm số lần xuất hiện, phát hiện trùng | Tính toán nhanh, trực quan. |
| Database (SQL Server, Access) | Dữ liệu > 1 triệu | Xử lý bằng truy vấn SQL, sau đó import kết quả. |
7.1. Ví dụ VBA Dictionary để so sánh 2 danh sách
Sub CompareLists() Dim dict As Object, ws1 As Worksheet, ws2 As Worksheet Dim lastRow1 As Long, lastRow2 As Long, i As Long, key As String Set dict = CreateObject("Scripting.Dictionary") Set ws1 = ThisWorkbook.Sheets("Sheet1") Set ws2 = ThisWorkbook.Sheets("Sheet2") lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row ' Load Sheet1 vào Dictionary (chuẩn hoá) For i = 2 To lastRow1 key = Trim(LCase(ws1.Cells(i, "A").Value)) If Not dict.Exists(key) Then dict.Add key, i ' lưu vị trí dòng đầu tiên Next i ' Kiểm tra Sheet2 For i = 2 To lastRow2 key = Trim(LCase(ws2.Cells(i, "A").Value)) If dict.Exists(key) Then ws2.Cells(i, "B").Value = "Trùng (Sheet1 Row " & dict(key) & ")" Else ws2.Cells(i, "B").Value = "Mới" End If Next i MsgBox "Hoàn tất so sánh!", vbInformation
End Sub
- Ưu điểm: O(n) cho mỗi danh sách, nhanh ngay cả với 1 triệu bản ghi.
- Lưu ý: Đảm bảo đủ bộ nhớ, và chuẩn hoá dữ liệu (trim, lower) trước khi đưa vào dictionary.
8. Tự động hoá quy trình bằng Macro và Power Automate
8.1. Macro tự động kiểm tra trùng khi nhập dữ liệu
Bạn có thể gắn macro Worksheet_Change vào sheet:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rngCheck As Range, cell As Range, key As String Set rngCheck = Me.Range("A2:A" & Me.Cells(Me.Rows.Count, "A").End(xlUp).Row) If Not Intersect(Target, rngCheck) Is Nothing Then Application.EnableEvents = False For Each cell In Intersect(Target, rngCheck) key = Trim(LCase(cell.Value)) If Application.WorksheetFunction.CountIf(rngCheck, key) > 1 Then cell.Interior.Color = vbYellow ' đánh dấu trùng Else cell.Interior.ColorIndex = xlNone End If Next cell Application.EnableEvents = True End If
End Sub
Điều này giúp ngay lập tức cảnh báo người dùng khi nhập dữ liệu trùng.
8.2. Power Automate (Flow) để so sánh dữ liệu trên SharePoint/OneDrive
- Trigger: Khi file Excel được cập nhật (OneDrive for Business).
- Action: “List rows present in a table” (lấy dữ liệu từ bảng).
- Apply to each: Duyệt từng dòng, dùng biểu thức
equals(toLower(trim(item()?'Column1')), toLower(trim(item()?'Column2'))). - Condition: Nếu
true→ cập nhật cột “Status” = “Trùng”, ngược lại “Mới”. - Write back: “Update a row” để ghi lại kết quả.
Power Automate cho phép đồng bộ dữ liệu giữa nhiều nguồn (SharePoint, SQL, Teams) mà không cần mở Excel.
9. Tổng kết – Lựa chọn giải pháp phù hợp
| Nhu cầu | Công cụ đề xuất | Khi nào sử dụng |
|---|---|---|
| So sánh nhanh 1‑2 ô (cùng hàng) | = , EXACT, Conditional Formatting | Dữ liệu ít, không cần chuẩn hoá phức tạp |
| So sánh danh sách lớn, cần chuẩn hoá (dấu, khoảng trắng) | Power Query + Clean/Trim/Lower, hoặc VBA RemoveDiacritics | Dữ liệu > 10.000, cần chuẩn hoá |
| Kiểm tra trùng lặp trong 2 cột | COUNTIF, XLOOKUP, Conditional Formatting | Dễ dàng, không cần macro |
| So sánh không phân biệt hoa/thường, bỏ dấu | VBA UDF (RemoveDiacritics) hoặc Power Query Text.RemoveDiacritics | Khi dữ liệu tiếng Việt có dấu |
| So sánh theo mẫu (wildcard) | COUNTIF, SEARCH | Khi muốn kiểm tra “có chứa” |
| Kiểm tra “gần giống” (Levenshtein) | VBA function | Khi cần phát hiện lỗi gõ, sao chép gần giống |
| Xử lý hàng triệu dòng | Power Query, VBA Dictionary, hoặc chuyển sang DB | Khi Excel chậm, cần hiệu suất cao |
| Tự động hoá quy trình | Macro (Worksheet_Change) + Power Automate | Khi muốn cảnh báo ngay lập tức hoặc đồng bộ đa nguồn |
Việc hiểu rõ mục tiêu, chọn công cụ phù hợp, và áp dụng chuẩn hoá dữ liệu là chìa khóa để so sánh hai ô (hoặc hàng) văn bản trong Excel một cách chính xác và hiệu quả. Hy vọng bài viết này đã cung cấp cho bạn một bộ công cụ toàn diện, từ các hàm cơ bản đến các giải pháp nâng cao, giúp bạn tự tin xử lý mọi tình huống so sánh dữ liệu trong công việc hằng ngày. Chúc bạn thành công!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
