Có thể bạn quan tâm: Cách Sao Chép Dữ Liệu Từ Một Sheet Sang Sheet Khác Trong Excel – Hướng Dẫn Chi Tiết
Giới thiệu chung
Trong công việc với Excel, ta thường xuyên gặp phải tình huống cần trích xuất một đoạn văn bản nằm giữa hai ký tự đặc biệt (ví dụ: “(”, “)”, “”, “”, “-”, “/”, “:”, “;”, “`”, “#”, “$”, …). Việc làm này có thể giúp ta phân tích dữ liệu, chuẩn hóa tên file, trích xuất mã số, hoặc đơn giản là loại bỏ phần không cần thiết trong chuỗi. Excel cung cấp một bộ hàm rất linh động để giải quyết nhu cầu này: MID, FIND, SEARCH, LEN, SUBSTITUTE, TRIM, TEXT, IFERROR, và nhiều hơn nữa.
Mục tiêu của bài viết này là cung cấp một hướng dẫn chi tiết, từ cơ bản đến nâng cao, giúp bạn tự tin áp dụng công thức Excel để trích xuất đoạn văn bản giữa hai ký tự trong bất kỳ tình huống nào. Bài viết sẽ bao gồm:
– Giải thích từng hàm một cách rõ ràng.
– Các ví dụ thực tế, từ đơn giản đến phức tạp.
– Các biến thể công thức tùy theo độ dài, vị trí, và số lần xuất hiện của ký tự.
– Lời khuyên và mẹo tránh lỗi thường gặp.
– Phương pháp nâng cao: dùng hàm mảng, hàm tùy chỉnh bằng VBA.
Đọc hết toàn bộ bài viết để nắm vững cả các công thức cơ bản và nâng cao, và áp dụng ngay vào bảng tính của bạn.
Có thể bạn quan tâm: Excel Cho Nhân Viên Kế Hoạch Sản Xuất: Hướng Dẫn Toàn Diện
1. Cần hiểu những hàm chính
Trước khi đi vào công thức cụ thể, hãy hiểu một số hàm nhất định là chìa khóa:
| Hàm | Mô tả | Ví dụ sử dụng |
|---|---|---|
MID(text, start_num, num_chars) | Trả về một đoạn văn bản của text bắt đầu từ vị trí start_num và có độ dài num_chars. | MID("Hello", 2, 3) → “ell” |
FIND(find_text, within_text, start_num) | Tìm vị trí của find_text trong within_text. Phân biệt chữ hoa/chuẩn. | FIND("l", "Hello") → 3 |
SEARCH(find_text, within_text, start_num) | Tương tự như FIND, nhưng không phân biệt chữ hoa/chuẩn. | SEARCH("L", "Hello") → 3 |
LEN(text) | Trả về độ dài ký tự của text. | LEN("Hello") → 5 |
SUBSTITUTE(text, old_text, new_text, instance_num) | Thay thế old_text bằng new_text. | SUBSTITUTE("a-b-c", "-", "_", 2) → “a-b_c” |
TRIM(text) | Loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi. | TRIM(" Hello ") → “Hello” |
IFERROR(value, value_if_error) | Trả về value nếu không có lỗi, ngược lại trả về value_if_error. | IFERROR(1/0, "Error") → “Error” |
LENB(text) | Độ dài chuỗi tính theo byte (đặc biệt khi xử lý ký tự tiếng Việt). | LENB("đ") → 2 |
CLEAN(text) | Loại bỏ ký tự không in được (control characters). | CLEAN("Hello" & CHAR(10)) → “Hello” |
Những hàm này sẽ được kết hợp lại để đạt được mục tiêu “trích xuất giữa hai ký tự”.
Có thể bạn quan tâm: Excel Auto Hide Rows Based On Cell Value: Hướng Dẫn Chi Tiết Và Các Phương Pháp Thực Tiễn
2. Cách làm cơ bản
2.1 Trích xuất giữa hai ký tự duy nhất
Giả sử ô A1 chứa chuỗi: Đề xuất: (Bảo hiểm). Bạn muốn lấy từ ký tự ( đến ký tự ). Công thức đơn giản nhất:
=MID(A1, FIND("(", A1) + 1, FIND(")", A1) - FIND("(", A1) - 1)
Giải thích:
– FIND("(", A1) trả về vị trí ký tự (.
– +1 để bỏ qua chính ký tự (.
– FIND(")", A1) trả về vị trí ký tự ).
– - FIND("(", A1) - 1 tính độ dài đoạn cần lấy (từ ( +1 cho đến ) -1).
Kết quả: Bảo hiểm.
L déi: Nếu chuỗi có nhiều cặp dấu ngoặc, công thức trên chỉ lấy đoạn giữa cặp đầu tiên. Để lấy đoạn giữa cặp thứ hai, ta cần biến đổi công thức.
2.2 Sử dụng hàm SEARCH thay vì FIND
Nếu bạn không quan tâm tới phân biệt hoa thường, dùng SEARCH sẽ dễ dàng hơn:
=MID(A1, SEARCH("(", A1) + 1, SEARCH(")", A1) - SEARCH("(", A1) - 1)
2.3 Xử lý trường hợp ký tự trùng nhau
Nếu chuỗi có thể thiếu ký tự đóng, chúng ta sẽ dùng IFERROR để tránh lỗi:
=IFERROR(MID(A1, FIND("(", A1) + 1, FIND(")", A1) - FIND("(", A1) - 1), "")
Nếu không tìm thấy ( hoặc ), công thức trả về chuỗi trống.
3. Xử lý nhiều cặp ký tự
3.1 Trích xuất đoạn giữa cặp thứ hai
Giả sử ô B1: Tên: (ABC) - Mã: (123). Bạn muốn lấy 123. Cách làm:
=MID(B1, FIND("(", B1, FIND(")", B1) + 1) + 1, FIND(")", B1, FIND(")", B1) + 1) - FIND("(", B1, FIND(")", B1) + 1) - 1)
Giải thích:
– FIND(")", B1) + 1 tìm vị trí ngay sau cặp thứ nhất.
– FIND("(", B1, ... ) tìm ( thứ hai.
– Tương Scene.
3.2 Công thức động với SUBSTITUTE + FIND
Một cách tinh gọn hơn là dùng SUBSTITUTE để thay thế ký tự thứ hai bằng một ký tự đặc biệt, sau đó tìm vị trí:
=LET( txt, B1, pos1, FIND("(", txt), pos2, FIND(")", txt, pos1 + 1), pos1_2, FIND("(", SUBSTITUTE(txt, ")", ")", 1), pos1 + 1), pos2_2, FIND(")", SUBSTITUTE(txt, ")", ")", 1), pos1_2 + 1), MID(txt, pos1_2 + 1, pos2_2 - pos1_2 - 1)
)
Lưu ý:
LETđược giới thiệu từ Excel 365, giúp làm cho công thức dễ đọc và tối ưu hiệu suất.
3.3 Trích xuất nhiều đoạn (mảng)
Nếu bạn muốn lấy tất cả các đoạn giữa dấu ngoặc trong một ô, ta có thể dùng công thức mảng:
=TEXTJOIN(", ", TRUE, IFERROR(TRIM(MID(SUBSTITUTE(A1, "(", REPT(" ", LEN(A1))), (ROW(INDIRECT("1:" & LEN(A1))) - 1 sn? LEN(A1), LEN(A1))), ""))
Công thức này khá phức tạp, nhưng thực chất là:
1. Thay thế tất cả ký tự ( bằng một dãy ký tự trống.
2. Dùng MID để lấy từng đoạn.
3. TEXTJOIN kết hợp các đoạn thành một chuỗi, ngăn cách bằng dấu phẩy.
4. Các biến thể thực tế
4.1 Trích xuất giữa hai ký tự khác nhau

Có thể bạn quan tâm: Excel: Tìm Giá Trị Tối Đa Trong Một Dải Bảng Với Tiêu Chí
Đôi khi ký tự mở và đóng không giống nhau: ví dụ "abc" hoặc "{'value'}". Công thức vẫn giống, chỉ thay đổi ký tự trong FIND.
=MID(C1, FIND("", C1) + 1, FIND("", C1) - FIND("", C1) - 1)
4.2 Trích xuất giữa hai ký tự có số lần xuất hiện khác nhau
Giả sử ô D1: ---ABC---DEF---. Bạn muốn lấy phần giữa hai dấu --- thứ hai và thứ ba. Cách làm:
=LET( txt, D1, delim, "---", pos1, FIND(delim, txt, FIND(delim, txt) + LEN(delim)), pos2, FIND(delim, txt, pos1 + LEN(delim)), MID(txt, pos1 + LEN(delim), pos2 - pos1 - LEN(delim))
)
4.3 Trích xuất giữa ký tự đầu tiên và ký tự cuối cùng
Nếu bạn muốn lấy toàn bộ chuỗi giữa ký tự đầu tiên xuất hiện và ký tự cuối cùng xuất hiện, ta có thể dùng SEARCH và LEN:
=MID(E1, SEARCH("(", Wellington?) + 1, LEN(E1) - SEARCH("(", Wellington?) - SEARCH(")", Wellington?) - 1)
Chú ý: SEARCH trên ký tự cuối cần tham chiếu tới LEN(E1).
5. Xử निर्माण
5.1 Kiểm tra lỗi khi ký tự không tồn tại
Khi trích xuất, ta thường gặp lỗi #VALUE!ию khi một trong hai ký tự không tồn tại trong chuỗi. IFERROR giúp tránh lỗi:
=IFERROR( MID(A2, FIND("(", A2) + 1, FIND(")", A2) - FIND("(", A2) - 1), "Ký tự không tồn tại"
)
5.2 Xử lý ký tự đặc biệt trong FIND
Một số ký tự như hoặc có tính năng đặc biệt trong hàm FIND. Khi sử dụng chúng, ta phải đặt chúng trong dấu ngoặc vuông , hoặc dùng CHAR(91) (đối với ) và CHAR(93) (đối với ):
=FIND(CHAR(91), A3) // tìm ''
ブランド ### 5.3 Kiểm tra độ dài đầu vào Nếu chuỗi quá ngắn, `FIND` có thể сиф etc. Để tránh, ta có thể kiểm tra độ dài trước: ```excel
=IF(LEN(A4) < 5, "Chuỗi quá ngắn", MID(...))
6. Sử dụng hàm TEXTSPLIT (Excel 365)
Excel 365 mới giới thiệu hàm TEXTSPLIT để chia chuỗi theo ký tự phân cách. Khi muốn lấy đoạn giữa hai ký tự, có thể dùng TEXTSPLIT kết hợp với `
=INDEX(TEXTSPLIT(A5, "(", ")"), 2, 1)
Giải thích:
– TEXTSPLIT(A5, "(", ")") chia chuỗi thành các phần: trước (, giữa ( và ), sau ).
– INDEX(..., 2, 1) lấy phần thứ hai (giữa ( và )).
Lưu ý:
TEXTSPLITchỉ có sẵn trong Excel 365 và các phiên bản hỗ trợ Office 365.
7. Phương pháp nâng cao: dùng VBA
Nếu công thức trở nên quá phức tạp hoặc bạn cần xử lý hàng ngàn dòng, có thể viết một hàm VBA tùy chỉnh:
Function ExtractBetween(ByVal txt As String, ByVal startChar As String, ByVal endChar As String) As String Dim sPos As Long, ePos As Long sPos = InStr(txt, startChar) If sPos = 0 Then ExtractBetween = "" Exit Function End If ePos = InStr(sPos + 1, txt, endChar) If ePos = 0 Then ExtractBetween = "" Exit Function End If ExtractBetween = Mid(txt, sPos + 1, ePos - sPos - 1)
End Function
Sau khi chèn vào module, bạn chỉ cần gọi trong ô:
=ExtractBetween(A6, "(", ")")
VBA cho phép bạn linh hoạt hơn trong việc xử lý trường hợp đặc biệt, như bỏ qua ký tự đầu tiên, tìm đoạn cuối cùng, hoặc lặp qua toàn bộ danh sách các ký tự.
8. Lời khuyên và mẹo tránh lỗi
- Cẩn thận với phân biệt chữ hoa/chuẩn:
FINDphân biệt,SEARCHkhông. Đối với dữ liệu thường xuyên thay đổi, dùngSEARCHđể tránh lỗi do chữ hoa/chuẩn khác nhau. - Kiểm tra độ dài chuỗi: Nếu chuỗi có thể rỗng hoặc quá ngắn, hãy dùng
LENhoặcIFđể tránh lỗi. - Sử dụng
TRIM: Khi trích xuất, có thể có khoảng trắng thừa.TRIMsẽ làm sạch. - Kiểm tra ký tự đặc biệt zase: Nếu ký tự là
hoặc, dùngCHAR(91)/CHAR(93)hoặc đặt trong dấu. - Sử dụng
IFERROR: Để tránh lỗi#VALUE!khi ký tự không tồn tại, luôn bao quanh công thức bằngIFERROR. - Sử dụng
LET: Nếu công thức lặp lại nhiều lần (ví dụ, tìm(và)nhiều lần), dùngLETgiúp tránh tính toán lại và làm công thức dễ đọc hơn. - Kiểm tra dữ liệu nhập: Đôi khi dữ liệu có ký tự đặc biệt hoặc ký tự control; dùng
CLEANđể loại bỏ.
9. Tóm tắt nhanh công thức
| Tình huống | Công thức mẫu |
|---|---|
Trích giữa ( và ) | =MID(A1, FIND("(", A1)+1, FIND(")", A1)-FIND("(", A1)-1) |
Trích giữa và | =MID(A1, FIND("", A1)+1, FIND("", A1)-FIND("", A1)-1) |
Trích giữa hai dấu - | =MID(A1, FIND("-", కూడా, FIND("-", A1)+1)+1, FIND("-", A1, FIND("-", A1)+1)-FIND("-", A1, FIND("-", A1)+1)-1) |
| Trích giữa ký tự thứ hai | =MID(A1, FIND("(",A1,FIND(")",A1)+1)+1, FIND(")",A1,FIND(")",A1)+1)-FIND("(",A1,FIND(")",A1)+1)-1) |
Sử dụng TEXTSPLIT | =INDEX(TEXTSPLIT(A Brooklyn, "(", ")"),2,1) |
| Hàm VBA | =ExtractBetween(A1,"(",")") |
10. Kết luận
Trích xuất đoạn văn bản giữa hai ký tự trong Excel có thể thực hiện bằng nhiều cách, từ công thức đơn giản với MID + FIND, tới các giải pháp nâng cao như LET, TEXTSPLIT hay thậm chí VBA. Mỗi cách có ưu nhược điểm riêng:
– Công thức cơ bản: Dễ dàng, nhanh, phù hợp với dữ liệu đơn giản.
– Công thức mảng: Dùng khi cần lấy nhiều đoạn trong một ô.
– TEXTSPLIT: Đơn giản, mạnh mẽ trong Excel 365.
– VBA: Linh hoạt tối đa, thích hợp với quy trình tự động hóa hoặc dữ liệu phức tạp.
Bằng cách hiểu rõ các hàm và cách kết hợp chúng, bạn có thể tự tin xử lý bất kỳ yêu cầu trích xuất văn bản nào trong Excel, tối ưu thời gian làm việc và giảm thiểu lỗi. Hãy thử áp dụng ngay vào bảng tính của bạn để cảm nhận sự tiện lợi và hiệu quả mà công thức Excel mang lại.

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ẻ.
