Lọc Khách Hàng Trùng Số Điện Thoại Trong Google Sheets
Mục lục:
Trả lời nhanh: Muốn lọc khách trùng số điện thoại trong Google Sheets, hãy chuẩn hóa số trước (bỏ dấu cách, dấu chấm, đổi đầu +84 thành 0), rồi dùng cột phụ với COUNTIF để đánh dấu số xuất hiện từ hai lần trở lên. Sau đó gộp thông tin hai dòng trùng và đặt quy tắc nhập để không trùng lại.
Giả sử bạn có một file khách hàng 600 dòng, gom từ ba nguồn: file Excel của nhân viên cũ, form đăng ký, và phần ghi tay sau mỗi cuộc gọi. Anh Tuấn gọi cho khách tên Lan, rồi chiều chị Mai gọi lại đúng người đó vì trong sheet cô xuất hiện hai lần, một dòng ghi 0912 345 678, dòng kia ghi +84912345678. Khách nhận hai cuộc gọi chào hàng trong một ngày. Đó là cái giá thật của danh sách trùng, và nó thường bắt đầu từ chuyện rất nhỏ: cùng một số nhưng gõ khác kiểu.
Vì sao danh sách khách hay bị trùng
Trùng hiếm khi do ai đó cố tình nhập hai lần. Nó sinh ra từ cách dữ liệu đi vào sheet.
Ba nguồn gây trùng quen thuộc
Nguồn đầu tiên là file Excel cũ. Mỗi người giữ một bản, đến lúc dán chung vào một sheet thì khách quen nằm ở cả ba bản. Nguồn thứ hai là biểu mẫu thu khách: người dùng tự gõ số nên có người viết 0912345678, người khác viết 0912.345.678, người khác nữa thêm dấu cách cho dễ đọc. Nguồn thứ ba là nhập tay, khi nhân viên vội và không kịp tìm xem khách đã có trong danh sách chưa.
Điểm chung: máy so sánh từng ký tự. Với Google Sheets, "0912 345 678" và "0912345678" là hai chuỗi hoàn toàn khác nhau, nên mọi cách đếm trùng làm ngay trên dữ liệu thô đều bỏ sót. Vì vậy bước đầu tiên không phải là tìm trùng mà là làm cho các số có cùng một dạng.
Một chi tiết nữa hay gây rối: số điện thoại đứng một mình trong ô thường bị Sheets hiểu là số, và mất số 0 ở đầu. Nếu cột đó đang hiện 912345678 thay vì 0912345678, hãy định dạng cột là văn bản thuần (Định dạng → Số → Văn bản thuần túy) trước khi nhập hoặc dán dữ liệu mới.
Chuẩn hóa số điện thoại bằng công thức
Nguyên tắc: không sửa trực tiếp cột gốc. Giữ nguyên cột số điện thoại người nhập, thêm một cột phụ chứa số đã làm sạch. Nếu công thức sai, bạn vẫn còn dữ liệu gốc để quay lại.
Cấu trúc bảng minh họa
Giả sử sheet có các cột như sau, dữ liệu bắt đầu từ dòng 2:
| Cột | Nội dung |
|---|---|
| A | Họ tên khách |
| B | Số điện thoại gốc (người nhập) |
| C | Số điện thoại đã chuẩn hóa |
| D | Cờ báo trùng |
| E | Nguồn (Excel, form, nhập tay) |
Công thức làm sạch ở ô C2
Cách ngắn gọn nhất là dùng REGEXREPLACE để xóa mọi ký tự không phải chữ số, rồi xử lý đầu số 84:
=IF(B2="","",IF(LEFT(REGEXREPLACE(TO_TEXT(B2),"[^0-9]",""),2)="84","0"&MID(REGEXREPLACE(TO_TEXT(B2),"[^0-9]",""),3,20),REGEXREPLACE(TO_TEXT(B2),"[^0-9]","")))
Công thức này làm ba việc: bỏ hết dấu cách, dấu chấm, dấu gạch ngang, dấu cộng; nếu chuỗi còn lại bắt đầu bằng 84 thì thay bằng số 0; còn lại giữ nguyên. Kết quả, cả "+84 912 345 678", "0912.345.678" và "84912345678" đều ra 0912345678.
Nếu bạn thích công thức dễ đọc hơn và dữ liệu không quá lộn xộn, có thể dùng SUBSTITUTE lồng nhau:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2," ",""),".",""),"-",""),"+84","0")
Bản này nhanh gọn nhưng chỉ xử lý các ký tự bạn liệt kê. Gặp dấu ngoặc đơn hay ký tự lạ khi copy từ file khác, nó sẽ để lọt. Theo kinh nghiệm thông thường, REGEXREPLACE chịu được dữ liệu bẩn tốt hơn, còn SUBSTITUTE hợp với dữ liệu mình tự kiểm soát.
Kéo công thức xuống hết các dòng, hoặc đặt ở C2 dạng ARRAYFORMULA nếu bạn muốn nó tự áp cho dòng mới:
=ARRAYFORMULA(IF(B2:B="","",IF(LEFT(REGEXREPLACE(TO_TEXT(B2:B),"[^0-9]",""),2)="84","0"&MID(REGEXREPLACE(TO_TEXT(B2:B),"[^0-9]",""),3,20),REGEXREPLACE(TO_TEXT(B2:B),"[^0-9]",""))))
Lưu ý khi dùng ARRAYFORMULA: cả cột C phía dưới ô C2 phải trống, nếu không Sheets báo lỗi không đủ chỗ để tràn kết quả.

Đánh dấu dòng trùng bằng COUNTIF
Khi cột C đã sạch, việc tìm trùng mới đáng tin. Ở ô D2, nhập:
=IF(C2="","",IF(COUNTIF($C$2:$C$601,C2)>1,"TRÙNG","Duy nhất"))
Với ví dụ 600 khách (dòng 2 đến 601), công thức đếm xem số ở C2 xuất hiện bao nhiêu lần trong cả cột. Từ hai lần trở lên thì báo "TRÙNG". Nếu danh sách của bạn dài hơn, đổi 601 thành dòng cuối thực tế, hoặc dùng $C$2:$C để lấy cả cột (chậm hơn một chút khi dữ liệu lớn).
Phân biệt "dòng đầu" và "dòng lặp lại"
Công thức trên đánh dấu cả hai dòng trùng. Đôi khi bạn muốn giữ dòng đầu và chỉ tô dòng sau, để biết dòng nào cần xóa hoặc gộp. Dùng phạm vi mở rộng dần:
=IF(C2="","",IF(COUNTIF($C$2:C2,C2)>1,"Lặp lại","Giữ"))
Tại dòng 2, phạm vi chỉ gồm C2; tại dòng 50, phạm vi là C2:C50. Nhờ vậy lần xuất hiện đầu tiên luôn là "Giữ", các lần sau mới là "Lặp lại".
Tô màu để nhìn ra ngay
Chọn cột A đến E, vào Định dạng → Định dạng có điều kiện → Công thức tùy chỉnh, nhập:
=COUNTIF($C$2:$C,$C2)>1
Chọn màu nền vàng nhạt. Mọi dòng có số trùng sẽ sáng lên, bạn không cần cuộn tìm cột D. Muốn xem riêng nhóm trùng, bật bộ lọc trên cột D và chọn "TRÙNG". Ai quen công thức nâng cao có thể rút danh sách trùng sang sheet khác bằng hàm QUERY, ví dụ lọc các dòng có cờ "TRÙNG" rồi sắp theo số điện thoại để hai dòng của cùng một khách nằm cạnh nhau.

Gộp thông tin của hai dòng trùng
Đây là bước nhiều người làm ẩu nhất: thấy trùng thì xóa dòng sau. Nhưng hai dòng thường chứa thông tin bổ sung cho nhau. Thử hình dung một tình huống minh họa: dòng đầu có tên "Lan" và nguồn "Excel cũ", dòng sau có tên "Nguyễn Thị Lan", địa chỉ đầy đủ và ghi chú "thích gọi buổi tối". Xóa dòng sau là mất đúng phần giá trị nhất.
Quy trình gộp thủ công, an toàn
- Sắp xếp theo cột C để các dòng trùng nằm liền nhau (Dữ liệu → Sắp xếp phạm vi).
- Với mỗi cặp, chọn dòng "chính", thường là dòng có nhiều ô được điền hơn.
- Chép các ô còn thiếu từ dòng phụ sang dòng chính. Với ghi chú, nối lại thay vì ghi đè, ví dụ "Ghi chú dòng 1; Ghi chú dòng 2".
- Đổi nhãn dòng phụ thành "Đã gộp" ở một cột trạng thái thay vì xóa ngay.
- Sau một tuần không phát sinh vấn đề, mới xóa hẳn các dòng "Đã gộp".
Bước 4 và 5 có vẻ rườm, nhưng nó cứu bạn khi phát hiện ra mình gộp nhầm. Hai khách khác nhau dùng chung một số, ví dụ vợ chồng hay nhân viên kế toán của một công ty, là chuyện có thật. Một số trùng chưa chắc là một người trùng.
Gộp tự động ghi chú bằng công thức
Nếu muốn gom ghi chú của mọi dòng có cùng số vào một ô, giả sử ghi chú nằm ở cột F, dùng ở một cột phụ G:
=TEXTJOIN("; ",TRUE,FILTER($F$2:$F$601,$C$2:$C$601=C2,$F$2:$F$601<>""))
Công thức lấy mọi ghi chú không rỗng của những dòng có cùng số chuẩn hóa rồi nối bằng dấu chấm phẩy. Nếu không có ghi chú nào khớp, FILTER trả lỗi, bạn có thể bọc thêm IFERROR(…,"") quanh công thức.
Quy tắc nhập để không trùng lại
Dọn một lần rồi để nó trùng tiếp thì chỉ là chữa cháy. Có ba lớp chặn rẻ tiền, làm ngay trong Google Sheets.
Kiểm tra dữ liệu ngay khi gõ
Đặt thêm một cột chuẩn hóa như ở trên, rồi tạo quy tắc kiểm tra dữ liệu cho cột đó. Vào Dữ liệu → Kiểm tra dữ liệu, chọn "Công thức tùy chỉnh là", áp dụng cho C2:C:
=COUNTIF($C$2:$C,C2)<2
Chọn "Từ chối dữ liệu đầu vào" hoặc hiện cảnh báo. Có một hạn chế thật cần biết: kiểm tra dữ liệu trên ô có công thức không chặn được người dùng, vì họ không gõ vào ô đó. Cách dùng thực tế là đặt chế độ cảnh báo kèm tô đỏ, để người nhập nhìn thấy ngay và tự xử lý.
Một quy ước chung bằng văn bản
Cả nhóm thống nhất một cách ghi: chỉ chữ số, bắt đầu bằng 0, không dấu cách. Viết thẳng vào dòng đầu của sheet hoặc dưới tiêu đề cột. Nghe đơn giản, nhưng với đội 3 đến 5 người, quy ước nói miệng thường chỉ sống được hai tuần.
Tìm trước khi thêm
Quy trình ngắn: trước khi thêm khách mới, nhấn Ctrl+F và tìm bốn số cuối. Mất ba giây, đủ chặn phần lớn trường hợp trùng do nhập tay. Nếu đội bạn làm việc ngoài thị trường và nhập dữ liệu bằng điện thoại, thói quen này càng quan trọng, vì bàn phím nhỏ dễ gõ sai.
Khi nào bảng tính thủ công bắt đầu hụt hơi
Cách làm bằng công thức chạy tốt đến một ngưỡng. Với vài trăm khách và một hai người nhập, nó đủ. Khi dữ liệu vào từ nhiều nơi cùng lúc, bạn bắt đầu gặp những giới hạn thật:
- Mỗi lần dán thêm danh sách Excel mới, phải chạy lại bước chuẩn hóa và rà trùng bằng tay.
- Công thức nằm trong sheet, ai lỡ tay xóa một ô là hỏng cả cột cờ trùng.
- COUNTIF trên hàng chục nghìn dòng làm sheet chậm rõ rệt.
- Không có bước "xem trước" cho biết dòng nào sắp bị coi là trùng trước khi dữ liệu được ghi vào.
Nếu bạn nhập khách từ Excel thường xuyên
Nếu việc nhập danh sách từ Excel hoặc CSV diễn ra hằng tuần thay vì một lần, bạn có thể cân nhắc phần mềm Quản Lý Khách Hàng CRM Mini của SheetStore. Phần nhập Excel/CSV của nó tự phát hiện trùng số điện thoại và cho xem trước trước khi ghi vào dữ liệu, tức là bước "nhìn trước khi chốt" mà bảng tính thủ công không có. Ngoài ra còn có lịch sử chăm sóc, phân quyền 4 vai trò và sao lưu tự động hằng tuần sang Google Drive.

Phần mềm này là file Google Sheets chạy cùng Apps Script trong tài khoản Google của bạn, không phải ứng dụng điện thoại hay web riêng, nên cần có tài khoản Google. Giá 399.000đ, trả một lần dùng trọn đời, không phí hằng tháng, và có 7 ngày dùng thử để bạn thử nhập một file khách thật xem việc phát hiện trùng có hợp với dữ liệu của mình không. Nếu danh sách của bạn chỉ vài trăm dòng và một người nhập, các công thức ở trên là đủ, chưa cần mua gì.
Bài viết liên quan:
Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?
Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Google Workspace Certified, 5+ years experience
Công cụ liên quan
Giải pháp cho bài viết này
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.
