Hàm REGEX Trong Excel 365: REGEXTEST, REGEXEXTRACT, REGEXREPLACE
Chia sẻ
"Hướng dẫn chi tiết 3 hàm REGEX mới trong Excel 365: REGEXTEST kiểm tra mẫu, REGEXEXTRACT trích xuất dữ liệu, REGEXREPLACE thay thế theo pattern. Kèm ví dụ thực tế validate email, tách số điện thoại, chuẩn hóa dữ liệu."
Nếu bạn từng phải viết công thức dài dòng chỉ để tách số điện thoại từ chuỗi văn bản, hay validate email trong Excel — thì REGEX chính là "vũ khí" bạn thiếu. Excel 365 vừa bổ sung 3 hàm REGEX hoàn toàn mới: REGEXTEST, REGEXEXTRACT và REGEXREPLACE. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng từng hàm với các ví dụ thực tế.
1. Regular Expression (REGEX) Là Gì?
Regular Expression (viết tắt: Regex) là một chuỗi ký tự đặc biệt dùng để mô tả "mẫu" (pattern) trong văn bản. Thay vì tìm kiếm chính xác một từ, regex cho phép bạn tìm theo quy luật.
1.1 So sánh Wildcard và Regex
Excel đã có wildcard (* và ?) trong các hàm như SEARCH, COUNTIF. Tuy nhiên, wildcard rất hạn chế:
Wildcard
*chỉ đại diện cho "bất kỳ ký tự nào" — không thể chỉ định loại ký tựWildcard
?chỉ đại diện cho "đúng 1 ký tự" — không thể lặp linh hoạtRegex
\d{3}= chính xác 3 chữ số,[A-Z]+= một hoặc nhiều chữ hoaRegex hỗ trợ lookahead, groups, alternation (OR logic) — wildcard không có
1.2 Tại sao cần Regex trong Excel?
Trước khi có hàm REGEX, để trích xuất số từ mã sản phẩm như "AB-123-XY" bạn phải dùng công thức phức tạp:
=TEXTJOIN("",TRUE,IFERROR(MID(B5,SEQUENCE(LEN(B5)),1)+0,""))Với REGEX, chỉ cần:
=REGEXEXTRACT(B5,"\d+")Kết quả: 123. Ngắn gọn, dễ hiểu, dễ bảo trì hơn rất nhiều.
2. Cú Pháp Regex Cơ Bản Cho Excel
Trước khi đi vào 3 hàm, bạn cần nắm các ký hiệu regex thường dùng:
2.1 Các ký tự đặc biệt
\d— Một chữ số (0-9)\D— Một ký tự KHÔNG phải chữ số\w— Chữ cái, chữ số hoặc dấu gạch dưới (word character)\W— Ký tự KHÔNG phải word character\s— Khoảng trắng (space, tab, newline)\b— Ranh giới từ (word boundary).— Bất kỳ ký tự nào (trừ newline)
2.2 Quantifiers (bộ đếm)
+— 1 hoặc nhiều lần. Ví dụ:\d+= một dãy số*— 0 hoặc nhiều lần?— 0 hoặc 1 lần (optional){n}— Chính xác n lần. Ví dụ:\d{3}= đúng 3 chữ số{n,m}— Từ n đến m lần. Ví dụ:\d{2,4}= 2 đến 4 chữ số
2.3 Character classes & Groups
[A-Z]— Một chữ hoa bất kỳ[a-z0-9]— Chữ thường hoặc chữ số[^abc]— Bất kỳ ký tự nào NGOẠI TRỪ a, b, c(abc|def)— abc HOẶC def (alternation)^— Đầu chuỗi,$— Cuối chuỗi
3. Hàm REGEXTEST — Kiểm Tra Mẫu
3.1 Cú pháp
=REGEXTEST(text, pattern)text— Ô hoặc chuỗi cần kiểm trapattern— Mẫu regex cần tìmKết quả: TRUE nếu tìm thấy mẫu, FALSE nếu không
3.2 Ví dụ 1: Validate email
Kiểm tra ô A2 có chứa email hợp lệ hay không:
=REGEXTEST(A2,"^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$")Giải thích pattern:
^[\w.+-]+— Bắt đầu bằng word characters, dấu chấm, dấu +, dấu -@— Ký tự @ bắt buộc[\w-]+— Domain name (chữ, số, gạch ngang)\.[a-zA-Z]{2,}$— Đuôi domain (.com, .vn, .org) — ít nhất 2 chữ cái
3.3 Ví dụ 2: Kiểm tra mã vùng Việt Nam
Xác nhận số điện thoại bắt đầu bằng 0 và có 10 chữ số:
=REGEXTEST(A2,"^0\d{9}$")3.4 Ví dụ 3: Dùng với FILTER
Lọc danh sách chỉ giữ lại các hàng có mã sản phẩm bắt đầu bằng "SP-" và theo sau bởi 4 chữ số:
=FILTER(A2:B100, REGEXTEST(A2:A100,"^SP-\d{4}$"))Đây là sự kết hợp cực mạnh giữa REGEXTEST và Dynamic Array — bạn không cần VBA hay helper column.
4. Hàm REGEXEXTRACT — Trích Xuất Dữ Liệu
4.1 Cú pháp
=REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])text— Chuỗi nguồnpattern— Mẫu regex cần trích xuấtreturn_mode— 0 (mặc định): trả về match đầu tiên; 1: trả về tất cả matchescase_sensitivity— 0 (mặc định): phân biệt hoa/thường; 1: không phân biệt
4.2 Ví dụ 1: Tách số từ chuỗi
Mã sản phẩm "WH-2024-A005" → cần lấy số đầu tiên:
=REGEXEXTRACT("WH-2024-A005","\d+")Kết quả: 2024 (match đầu tiên). Để lấy TẤT CẢ số:
=REGEXEXTRACT("WH-2024-A005","\d+",1)Kết quả: spill ra 2 ô → 2024 và 005.
4.3 Ví dụ 2: Tách domain từ email
=REGEXEXTRACT(A2,"@([\w.-]+)")Với A2 = "user@tradadata.com" → Kết quả: tradadata.com. Dấu ngoặc tròn () tạo capture group — chỉ trả về phần trong group.
4.4 Ví dụ 3: Tách mã chứng khoán
Từ chuỗi "Mua 500 cổ VNM giá 85.2" → tách mã 3 chữ hoa:
=REGEXEXTRACT(A2,"\b[A-Z]{3}\b")Kết quả: VNM. Pattern `\b[A-Z]{3}\b` nghĩa là: ranh giới từ + đúng 3 chữ hoa + ranh giới từ.
4.5 Ví dụ 4: Tách ngày tháng
Chuỗi "Hóa đơn ngày 15/03/2026 số HD-001" → tách ngày:
=REGEXEXTRACT(A2,"\d{2}/\d{2}/\d{4}")Kết quả: 15/03/2026.
5. Hàm REGEXREPLACE — Thay Thế Theo Mẫu
5.1 Cú pháp
=REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])text— Chuỗi nguồnpattern— Mẫu cần tìmreplacement— Chuỗi thay thế (hỗ trợ $1, $2 cho capture groups)occurrence— 0 (mặc định): thay tất cả; n: thay lần xuất hiện thứ ncase_sensitivity— 0 (mặc định): phân biệt hoa/thường; 1: không phân biệt
5.2 Ví dụ 1: Xóa ký tự đặc biệt
Làm sạch tên sản phẩm, chỉ giữ chữ cái, số và khoảng trắng:
=REGEXREPLACE(A2,"[^\w\s]","")"Sản phẩm #1 (mới!)" → "Sản phẩm 1 mới"
5.3 Ví dụ 2: Chuẩn hóa số điện thoại
Chuyển "098.765.4321" hoặc "098-765-4321" thành "0987654321":
=REGEXREPLACE(A2,"[.\-\s]","")5.4 Ví dụ 3: Đổi định dạng ngày
Chuyển "2026-03-15" (YYYY-MM-DD) sang "15/03/2026" (DD/MM/YYYY):
=REGEXREPLACE(A2,"(\d{4})-(\d{2})-(\d{2})","$3/$2/$1")Capture groups: $1 = năm, $2 = tháng, $3 = ngày → sắp xếp lại thứ tự.
5.5 Ví dụ 4: Ẩn thông tin nhạy cảm
Che số CMND/CCCD, chỉ hiện 4 số cuối:
=REGEXREPLACE(A2,"\d(?=\d{4})","*")"012345678901" → "****8901". Pattern dùng lookahead `(?=\d{4})` để chỉ thay thế các chữ số đứng trước 4 chữ số khác.
6. Tình Huống Thực Tế Kết Hợp 3 Hàm
6.1 Validation form nhập liệu
Tạo cột kiểm tra tự động cho form nhập dữ liệu:
// Kiểm tra mã nhân viên (2 chữ hoa + 4 số)
=REGEXTEST(B2,"^[A-Z]{2}\d{4}$")
// Kiểm tra email
=REGEXTEST(C2,"^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$")
// Kiểm tra số điện thoại VN
=REGEXTEST(D2,"^(0|\+84)\d{9}$")6.2 Xử lý dữ liệu import lộn xộn
Dữ liệu từ ERP thường có format không thống nhất. Ví dụ cột địa chỉ:
// Tách số nhà
=REGEXEXTRACT(A2,"^\d+[A-Za-z]?")
// Tách tên đường
=REGEXEXTRACT(A2,"(?:Đường|đường|Phố|phố)\s+(.+?)(?:,|$)")
// Tách quận/huyện
=REGEXEXTRACT(A2,"(?:Quận|Q\.|Huyện|H\.)\s*(.+?)(?:,|$)")6.3 Chuẩn hóa dữ liệu hàng loạt
// Chuẩn hóa mã sản phẩm: "sp001", "SP-001", "SP001" → "SP-001"
=REGEXREPLACE(UPPER(A2),"^(SP)-?(\d+)","$1-$2")
// Xóa khoảng trắng thừa (2+ spaces → 1 space)
=REGEXREPLACE(A2,"\s{2,}"," ")
// Loại bỏ prefix "Re:", "Fwd:" lặp lại trong tiêu đề email
=REGEXREPLACE(A2,"^(Re:|Fwd:\s*)+","")7. Lưu Ý Quan Trọng
Yêu cầu Excel 365 (Microsoft 365 subscription) — không hoạt động trên Excel 2021, 2019 hay đời cũ hơn
Case-sensitive mặc định — "abc" ≠ "ABC". Dùng tham số case_sensitivity = 1 để tắt phân biệt hoa thường
Escape ký tự đặc biệt — Trong regex,
.()[là ký tự đặc biệt. Để tìm dấu chấm thật, dùng\.Backslash kép trong công thức — Khi viết pattern trong Excel, dùng
\\dthay vì\dnếu gặp lỗi (tùy phiên bản)Performance — Regex chậm hơn hàm text thông thường (LEFT, MID, RIGHT) trên dataset lớn (>10,000 hàng). Chỉ dùng khi cần pattern matching phức tạp
Spill range — REGEXEXTRACT với return_mode=1 trả về mảng động (dynamic array). Đảm bảo có đủ ô trống phía dưới/bên phải
Câu Hỏi Thường Gặp (FAQ)
Hàm REGEX có hoạt động trên Excel 2021 không?
Không. Ba hàm REGEXTEST, REGEXEXTRACT, REGEXREPLACE chỉ có trên Excel 365 (Microsoft 365). Nếu dùng phiên bản cũ hơn, bạn cần dùng VBA hoặc các công thức thay thế phức tạp hơn như MID + SEQUENCE + IFERROR.
REGEX trong Excel có giống REGEX trong Python/JavaScript không?
Tương tự nhưng không hoàn toàn giống. Excel dùng chuẩn PCRE2 (Perl Compatible Regular Expressions). Hầu hết pattern thông dụng đều hoạt động. Tuy nhiên, một số tính năng nâng cao như named groups (?P<name>) có thể khác cú pháp.
Có thể dùng REGEX trong Conditional Formatting không?
Không trực tiếp. Nhưng bạn có thể tạo helper column dùng REGEXTEST, rồi dùng kết quả TRUE/FALSE đó làm điều kiện Conditional Formatting. Ví dụ: tô đỏ các ô email không hợp lệ.
Dùng REGEXREPLACE để thay thế, nhưng muốn giữ nguyên case thì sao?
Dùng capture group. Ví dụ thay "mr." hoặc "Mr." bằng "Ông": =REGEXREPLACE(A2,"(?i)mr\.\s*","Ông "). Flag (?i) ở đầu pattern bật chế độ case-insensitive.
REGEX có thể xử lý Unicode / tiếng Việt không?
Có. Excel REGEX hỗ trợ Unicode nên hoạt động tốt với tiếng Việt có dấu. Ví dụ: =REGEXTEST("Nguyễn Văn A","Nguyễn") trả về TRUE. Tuy nhiên, character class như [a-z] chỉ bao gồm ASCII — không bao gồm ă, â, ê, ô, ơ, ư.
Kết Luận
Ba hàm REGEX mới trong Excel 365 — REGEXTEST, REGEXEXTRACT, REGEXREPLACE — là bước tiến lớn cho người dùng Excel. Chúng giúp giải quyết các bài toán xử lý text phức tạp mà trước đây cần VBA hoặc công thức dài hàng trăm ký tự.
Hãy bắt đầu với REGEXTEST để validate dữ liệu, REGEXEXTRACT để tách thông tin, và REGEXREPLACE để chuẩn hóa — từ đó nâng cấp kỹ năng Excel của bạn lên một tầm mới. 🚀
Mục lục
- 1. Regular Expression (REGEX) Là Gì?
- 1.1 So sánh Wildcard và Regex
- 1.2 Tại sao cần Regex trong Excel?
- 2. Cú Pháp Regex Cơ Bản Cho Excel
- 2.1 Các ký tự đặc biệt
- 2.2 Quantifiers (bộ đếm)
- 2.3 Character classes & Groups
- 3. Hàm REGEXTEST — Kiểm Tra Mẫu
- 3.1 Cú pháp
- 3.2 Ví dụ 1: Validate email
- 3.3 Ví dụ 2: Kiểm tra mã vùng Việt Nam
- 3.4 Ví dụ 3: Dùng với FILTER
- 4. Hàm REGEXEXTRACT — Trích Xuất Dữ Liệu
- 4.1 Cú pháp
- 4.2 Ví dụ 1: Tách số từ chuỗi
- 4.3 Ví dụ 2: Tách domain từ email
- 4.4 Ví dụ 3: Tách mã chứng khoán
- 4.5 Ví dụ 4: Tách ngày tháng
- 5. Hàm REGEXREPLACE — Thay Thế Theo Mẫu
- 5.1 Cú pháp
- 5.2 Ví dụ 1: Xóa ký tự đặc biệt
- 5.3 Ví dụ 2: Chuẩn hóa số điện thoại
- 5.4 Ví dụ 3: Đổi định dạng ngày
- 5.5 Ví dụ 4: Ẩn thông tin nhạy cảm
- 6. Tình Huống Thực Tế Kết Hợp 3 Hàm
- 6.1 Validation form nhập liệu
- 6.2 Xử lý dữ liệu import lộn xộn
- 6.3 Chuẩn hóa dữ liệu hàng loạt
- 7. Lưu Ý Quan Trọng
- Câu Hỏi Thường Gặp (FAQ)
- Hàm REGEX có hoạt động trên Excel 2021 không?
- REGEX trong Excel có giống REGEX trong Python/JavaScript không?
- Có thể dùng REGEX trong Conditional Formatting không?
- Dùng REGEXREPLACE để thay thế, nhưng muốn giữ nguyên case thì sao?
- REGEX có thể xử lý Unicode / tiếng Việt không?
- Kết Luận
Muốn làm chủ Excel?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
BYCOL & BYROW — Áp Dụng Hàm Theo Hàng/Cột
BYROW áp dụng LAMBDA cho từng hàng, BYCOL cho từng cột. Tính MAX, SUM, COUNT, TEXTJOIN mỗi hàng/cột chỉ với 1 công thức spill.
Hàm CELL & INFO — Thông Tin Worksheet & Hệ Thống
CELL trả về thông tin ô — format, vị trí, đường dẫn file. INFO trả về thông tin hệ thống — OS, Excel version, calc mode. Hai hàm metadata ít ai biết nhưng cực kỳ hữu ích.
WRAPCOLS & WRAPROWS — Reshape Mảng 1D → 2D Excel 365
WRAPCOLS gập theo cột, WRAPROWS gập theo hàng. Biến mảng 1D thành bảng 2D — tạo lịch tháng, chia nhóm, reshape dữ liệu chỉ với 1 công thức.
