Để trích ký tự giữa 2 dấu gạch nối (-) trong Excel, ta sẽ sử dụng kết hợp hàm MID/LEN với hàm SEARCH/FIND để có thể áp dụng cho mọi phiên bản Excel. Dưới đây sẽ là hướng dẫn chi tiết:
TH1: Chuỗi chỉ có đúng 2 dấu gạch nối (-)
Với chuỗi có đúng 2 dấu gạch nối (ví dụ như ô A2 chứa “ABC-123-XYZ“) và ta muốn tách lấy 123 giữa 2 dấu nối thì ta sử dụng công thức tổng quát sau:
=MID(Ô chứa văn bản, FIND("-",Ô chứa văn bản)+1,FIND("-",Ô chứa văn bản, FIND("-",Ô chứa văn bản)+1) - FIND("-",Ô chứa văn bản) - 1)
Trong đó:
FIND("-", Ô chứa văn bản)giúp tìm vị trí dấu nối-thứ nhất.FIND("-",Ô chứa văn bản, FIND("-",Ô chứa văn bản)+1)giúp tìm vị trí dấu nối-thứ hai (nhờstart_num).MID(text, start, num_chars)sẽ cắt phần giữa hai vị trí dấu nối tìm được ở trên.
Áp dụng trong ô A2 ở trên thì ta có công thức sau:
=MID(A2, FIND("-",A2)+1,FIND("-",A2, FIND("-",A2)+1) - FIND("-",A2) - 1)
Lưu ý: Trong trường hợp ta muốn tránh trường hợp không tìm thấy 2 dấu gạch nối và không muốn công thức trả về thông báo lỗi, ta có thể sử dụng thêm hàm IFERROR để trả về kết quả rỗng thay thế thong báo lỗi:
=IFERROR(MID(A2, FIND("-",A2)+1,FIND("-",A2, FIND("-",A2)+1) - FIND("-",A2) - 1),"")
TH2: Lấy ký tự giữa 2 dấu nối đầu tiên
Trong trường hợp chuỗi gồm có nhiều dấu nối (lớn hơn 2) nhưng ta chỉ cần lấy ký tự giữa 2 dấu gạch nối đầu tiên (dấu nối thứ 1 và thứ 2). Vậy thì ta vẫn sẽ sử dụng công thức ở TH1 vì nó vẫn đúng kể cả khi có 3,4,5,… dấu nối vì ta chỉ nhìn vào 2 dấu nối đầu tiên.
Ví dụ ô A3 chứa chuỗi là mã đơn hàng INV-2025-09-22-CRM và giờ ta muốn tách lấy phần năm trong mã đơn 2025 thì ta sử dụng công thức sau:
=IFERROR(MID(A3, FIND("-",A3)+1,FIND("-",A3, FIND("-",A3)+1) - FIND("-",A3) - 1),"")
Lưu ý: Hàm trên đã bọc hàm IFERROR để tránh trả về thông báo lỗi khi không tìm thấy dấu nối.
TH3: Lấy ký tự giữa 2 dấu nối thứ K và K + 1
Với trường hợp chuỗi có nhiều hơn 2 dấu nối (ví dụ như tận 4 dấu nối) và ta muốn lấy đoạn ký tự giữa dấu nối thứ K và K + 1 (ví dụ là dấu 2 và 3) thì ta thực hiện như thế nào?
Lúc này ta có 2 cách sử dụng:
Cách 1: Sử dụng thuần hàm FIND lồng nhau
Cách này chỉ phù hợp khi số k nhỏ ví dụ ( 3 và 4) nếu số k lớn hơn thì nên sử dụng cách số 2.
Với cách này, ta vẫn sẽ sử dụng hàm FIND để tìm vị trí dấu nối thứ K và K+1 trong chuỗi rồi sử dụng hàm MID để cắt.
Ví dụ ô A4 chứa chuỗi SP-001-A-2025-09-22 có đến 5 dấu gạch nối. Giờ ta muốn lấy phần năm 2025 giữa dấu nối thứ 3 và thứ 4 thì ta thực hiện như sau:
- Tìm vị trí dấu nối thứ 3:
FIND("-", A4, FIND("-", A4, FIND("-", A4)+1)+1) - Tìm vị trí dấu nối thứ 4:
FIND("-", A4, FIND("-", A4, FIND("-", A4, FIND("-", A4)+1)+1)+1)
Lúc này, ta sử dụng hàm MID để cắt chuỗi theo vị trí đã tìm như sau:
=MID(A4,
FIND("-", A4, FIND("-", A4, FIND("-", A4)+1)+1)+1,
FIND("-", A4, FIND("-", A4, FIND("-", A4, FIND("-", A4)+1)+1)+1)
- FIND("-", A4, FIND("-", A4, FIND("-", A4)+1)+1) - 1
)
Kết quả hàm sẽ trả về như sau:
Lưu ý: Ta có thể sử dụng hàm IFERROR để bọc ngoài cùng nhằm xử lý không trả về thông báo lỗi nếu không tìm thấy dấu nối.
Theo cách này, nhược điểm rõ ràng là công thức sẽ rất cồng kềnh và rối. Sau đây mình sẽ giới thiệu thêm cách 2 với công thức ngắn gọn hơn.
Cách 2: Sử dụng hàm SUBTITUTE để xác định dấu nối thứ K
Vì FIND/SEARCH chỉ trả về vị trí một lần xuất hiện (tính từ trái sang) và muốn lấy lần xuất hiện thứ k bạn buộc phải lồng nhiều FIND với start_num tăng dần.
Với SUBTITUTE chỉ thay đúng dấu nối thứ k bằng ký hiệu đánh dấu (ví dụ: ♦) là có thể dễ dàng tìm vị trí dấu nối thứ K bằng FIND("♦", …).
Ví dụ ô A5 chứa SP-002-A-2025-09-22 thì sử dụng hàm SUBTITUTE để lấy ký tự giữa dấu nối 3 và 4 như sau:
=MID(
A5,
FIND("♦",SUBSTITUTE(A5,"-","♦",3))+1,
FIND("♦",SUBSTITUTE(A5,"-","♦",4)) - FIND("♦",SUBSTITUTE(A5,"-","♦",3)) - 1
)
TH4: Trích ký tự giữa 2 dấu gạch nối cuối cùng
Với một chuỗi dài có nhiều gạch nối, và ta muốn lấy ký tự giữa 2 dấu gạch nối cuối cùng. Lúc này nếu sử dụng hàm FIND thì ta sẽ gặp 1 vấn đề đó là:
Không có hàm “FIND từ phải sang trái”, nên cách ổn định nhất là mẹo đếm số dấu rồi thao tác trên dấu thứ m-1 và m.
Ví dụ ô A6 là ô cần chứa chuỗi văn bản cần tách (INV-2024-09-22-SP1-CRM), lúc này tư duy tách ta sẽ làm như sau:
LEN(A6)-LEN(SUBSTITUTE(A6,"-","")) = mđể đếm tổng số dấu-- Dùng
SUBSTITUTE(text,"-","♦",m)để tạm đánh dấu dấu cuối bằng ký tự đặc biệt♦, rồiFIND("♦",…)lấy vị trí; tương tự cho m-1.
Công thức cuối cùng sẽ là:
=MID(
A6,
FIND("♦",SUBSTITUTE(A6,"-","♦",
LEN(A6)-LEN(SUBSTITUTE(A6,"-",""))-1))+1,
FIND("♦",SUBSTITUTE(A6,"-","♦",
LEN(A6)-LEN(SUBSTITUTE(A6,"-",""))))
- FIND("♦",SUBSTITUTE(A6,"-","♦",
LEN(A6)-LEN(SUBSTITUTE(A6,"-",""))-1)) - 1
)
Xem ngay FILE áp dụng công thức lấy ký tự giữa 2 gạch nối
Trên đây là hướng dẫn chi tiết cách sử dụng hàm MID/LEN kết hợp với hàm FIND/SEARCH để lấy ký tự giữa 2 dấu gạch nối trong Excel. Chúc các bạn áp dụng thành công!





