Hàm Thay Thế (substitute) Trong Excel: Hướng Dẫn Toàn Diện, Ứng Dụng Thực Tế Và Mẹo Tối Ưu

Mở đầu: Tại sao hàm SUBSTITUTE lại quan trọng?

Trong môi trường làm việc với dữ liệu, việc xử lý và làm sạch dữ liệu (data cleaning) là một trong những công đoạn không thể thiếu. Dữ liệu thực tế thường chứa các ký tự không mong muốn, lỗi nhập liệu, hoặc các mẫu text cần được chuẩn hoá để phân tích tiếp theo. Excel, một trong những công cụ phổ biến nhất cho công việc này, cung cấp một loạt các hàm xử lý chuỗi ký tự, trong đó hàm SUBSTITUTE (tiếng Việt thường được gọi là “hàm THAY THẾ”) đóng vai trò then chốt.

Hàm SUBSTITUTE cho phép bạn thay thế một hoặc nhiều đoạn văn bản (substring) trong một ô bằng một giá trị mới, mà không làm thay đổi các ký tự khác. Đây là công cụ mạnh mẽ để:

  • Xóa ký tự thừa như dấu gạch ngang, dấu chấm, khoảng trắng thừa.
  • Chuẩn hoá định dạng (ví dụ: chuyển “01/02/2026” thành “01‑02‑2026”).
  • Thay đổi mã sản phẩm, ví dụ “PROD‑001” → “PROD‑A001”.
  • Kết hợp với các hàm khác (LEFT, RIGHT, MID, TEXT, IF, VLOOKUP…) để xây dựng các công thức phức tạp.

Bài viết này sẽ cung cấp cho bạn một hiểu biết sâu rộng về hàm SUBSTITUTE: cấu trúc, các tham số, cách sử dụng cơ bản, các ví dụ thực tế, so sánh với các hàm tương tự, và một loạt mẹ́o nâng cao giúp bạn tối ưu hoá quy trình làm việc.

1. Cú pháp và các tham số của hàm SUBSTITUTE

1.1. Cú pháp chuẩn

SUBSTITUTE(text, old_text, new_text, instance_num)
Tham sốKiểu dữ liệuMô tả
textText (hoặc reference)Văn bản gốc chứa đoạn cần thay thế.
old_textTextĐoạn văn bản (hoặc ký tự) cần được thay thế.
new_textTextĐoạn văn bản (hoặc ký tự) sẽ thay thế cho old_text.
instance_numNumber (tùy chọn)Số lần xuất hiện của old_text mà bạn muốn thay thế. Nếu bỏ qua, Excel sẽ thay thế tất cả các lần xuất hiện.

1.2. Chi tiết các tham số

  • text: Có thể là một ô chứa dữ liệu (ví dụ: A2) hoặc một chuỗi ký tự được đặt trong dấu ngoặc kép (“Hello World”). Khi là tham chiếu ô, công thức sẽ tự động cập nhật khi giá trị ô thay đổi.
  • old_text: Đoạn cần thay thế. Nếu không tìm thấy old_text trong text, hàm trả về text nguyên gốc.
  • new_text: Đoạn thay thế. Có thể là một chuỗi rỗng (“”) để thực hiện việc xóa đoạn ký tự.
  • instance_num: Khi có nhiều hơn một lần xuất hiện của old_text, tham số này cho phép bạn chỉ thay thế lần thứ n. Ví dụ, instance_num = 2 sẽ chỉ thay thế lần xuất hiện thứ hai. Nếu giá trị vượt quá số lần xuất hiện thực tế, hàm trả về text không thay đổi.

1.3. Lưu ý quan trọng

  • Hàm SUBSTITUTE không phân biệt chữ hoa/thường. Nếu muốn phân biệt, bạn cần kết hợp với hàm EXACT hoặc FIND.
  • Khi old_text hoặc new_text là một chuỗi rỗng (“”), hàm thực hiện xóa hoặc chèn ký tự tại vị trí mong muốn.
  • Tham số instance_num chỉ áp dụng khi old_text xuất hiện nhiều lần. Khi không cung cấp, tất cả các lần xuất hiện sẽ được thay thế.

2. Sử dụng cơ bản: Các ví dụ thực tế

2.1. Thay thế toàn bộ ký tự

Mục tiêu: Thay thế dấu gạch ngang (“-”) bằng dấu chấm (“.”) trong cột mã sản phẩm.

A (Mã cũ)
ABC-123
XYZ-456
LMN-789

Công thức:

=SUBSTITUTE(A2, "-", ".")

Kết quả:

B (Mã mới)
ABC.123
XYZ.456
LMN.789

2.2. Xóa ký tự không mong muốn

Mục tiêu: Loại bỏ dấu cách thừa ở đầu và cuối một chuỗi.

A (Tên)
” Nguyễn Văn A “
” Trần Thị B “
” Lê C “

Công thức:

=SUBSTITUTE(TRIM(A2), " ", "")

Giải thích: Đầu tiên dùng TRIM để loại bỏ khoảng trắng đầu/cuối, sau đó dùng SUBSTITUTE để xóa tất cả khoảng trắng còn lại trong chuỗi, nếu muốn chỉ xóa khoảng trắng đầu/cuối thì chỉ cần TRIM.

2.3. Thay thế lần xuất hiện thứ nhất

Mục tiêu: Thay thế dấu “/” đầu tiên trong ngày tháng năm thành dấu “-”.

A (Ngày)
12/03/2026
05/11/2026
31/12/2026

Công thức:

=SUBSTITUTE(A2, "/", "-", 1)

Kết quả:

B (Ngày chuẩn)
12-03/2026
05-11/2026
31-12/2026

Ở đây chỉ thay đổi dấu “/” đầu tiên, còn lại giữ nguyên.

2.4. Thay thế nhiều ký tự đồng thời (kết hợp hàm)

Mục tiêu: Chuyển đổi định dạng số điện thoại “(012) 345‑6789” thành “012-345-6789”.

A (SĐT gốc)
(012) 345‑6789
(098) 765‑4321

Công thức (lồng 3 lần SUBSTITUTE):

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "(", ""), ")", ""), " ", "-")

Kết quả:

B (SĐT chuẩn)
012-345-6789
098-765-4321

3. So sánh SUBSTITUTE với các hàm thay thế khác

HàmĐặc điểmKhi dùng
SUBSTITUTEThay thế text trong chuỗi, không phân biệt vị trí, có tùy chọn instance_num.Thay thế ký tự/chuỗi bất kỳ, không cần dựa vào vị trí.
REPLACEThay thế dựa trên vị trí và số ký tự (cần biết vị trí bắt đầu và độ dài).Thay đổi phần cố định trong chuỗi, ví dụ: thay đổi 3 ký tự từ vị trí 5.
TEXTJOIN + FILTERXML (đối với Excel 2026+), REGEXREPLACE (Google Sheets)Thay thế theo biểu thức chính quy (regex).Khi cần thay thế phức tạp, pattern matching.
FIND/SEARCH + LEFT/RIGHT/MIDTìm vị trí rồi cắt ghép lại.Khi muốn thay thế dựa trên vị trí động, hoặc khi SUBSTITUTE không đáp ứng yêu cầu.

Khi nào nên dùng SUBSTITUTE?

  • Khi bạn biết đoạn ký tự cần thay thế, nhưng không biết vị trí xuất hiện.
  • Khi cần thay thế tất cả hoặc các lần xuất hiện cụ thể.
  • Khi muốn xóa một ký tự (đặt new_text = "").

Khi nào nên dùng REPLACE?

  • Khi bạn có vị trí và độ dài cố định của phần cần thay đổi, ví dụ: “ABCD1234” → thay “1234” thành “5678” (REPLACE(A2,5,4,"5678")).

4. Ứng dụng nâng cao: Kết hợp SUBSTITUTE với các hàm khác

4.1. Tách và chuẩn hoá địa chỉ email

Giả sử cột A chứa email dạng “Tên Đệm email@example.com”. Bạn muốn tách ra tên và địa chỉ email riêng biệt.

A (Email gốc)
Nguyễn Văn A nguyenvana@example.com
Trần Thị B tranb@example.org

Bước 1: Loại bỏ dấu “<” và “>”

=SUBSTITUTE(SUBSTITUTE(A2, "<", ""), ">", "")

Kết quả tạm thời: “Nguyễn Văn A email@example.com”

Bước 2: Tách tên và email bằng FIND và LEFT/RIGHT

=TRIM(LEFT(B2, FIND("@", B2)-1-1)) // Tên
=TRIM(RIGHT(B2, LEN(B2)-FIND("@", B2)+1)) // Email

Bạn có thể gộp lại thành một công thức duy nhất:

=TRIM(LEFT(SUBSTITUTE(SUBSTITUTE(A2,"<",""),">",""), FIND("@", SUBSTITUTE(SUBSTITUTE(A2,"<",""),">",""))-2))

4.2. Thay đổi định dạng ngày tháng trong báo cáo

Hàm Thay Thế Trong Excel
Hàm Thay Thế Trong Excel

Trong một báo cáo, ngày tháng được nhập dưới dạng “dd/mm/yyyy”, nhưng cần xuất ra “yyyy-mm-dd” cho hệ thống khác.

A (Ngày)
15/04/2026
01/12/2026

Công thức:

=TEXT(DATE(MID(A2,7,4), MID(A2,4,2), LEFT(A2,2)), "yyyy-mm-dd")

Nếu muốn dùng SUBSTITUTE để thay dấu “/” bằng “-” và sau đó dùng DATEVALUE:

=TEXT(DATEVALUE(SUBSTITUTE(A2, "/", "-")), "yyyy-mm-dd")

4.3. Tạo mã số tự động từ tên

Bạn muốn tạo mã nhân viên dựa trên tên: lấy ký tự đầu tiên của họ và năm sinh.

A (Tên + Năm sinh)
Nguyễn Văn A 1990
Trần Thị B 1985

Công thức:

=UPPER(LEFT(SUBSTITUTE(A2," ",""),1)) & RIGHT(A2,4)

Ở đây SUBSTITUTE(A2," ","") loại bỏ dấu cách để lấy ký tự đầu tiên chính xác.

4.4. Xử lý dữ liệu đa ngôn ngữ

Khi dữ liệu chứa các ký tự đặc biệt (ví dụ tiếng Việt có dấu), bạn muốn loại bỏ dấu để so sánh.

Excel không có hàm chuẩn để bỏ dấu, nhưng có thể dùng bảng thay thế:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,
"á","a"),"à","a"),"ả","a"),"ã","a"),"ạ","a")

Bạn có thể lặp lại cho toàn bộ các nguyên âm có dấu. Để ngắn gọn, tạo một hàm tùy chỉnh (VBA) hoặc dùng Power Query.

5. Thực hành: Bài tập thực tế và giải pháp

Bài 1: Chuẩn hoá mã sản phẩm

Dữ liệu (cột A):
PROD-001, PROD-002, PROD-003A, PROD-004B

Yêu cầu:
– Loại bỏ dấu “-”.
– Thêm tiền tố “X” trước số.

Giải pháp:

="X"&SUBSTITUTE(A2,"-","")

Kết quả: XPROD001, XPROD002, XPROD003A, XPROD004B.

Bài 2: Xóa ký tự “” và “#” trong mô tả

Dữ liệu (cột B):
Sản phẩm tốt#, #Khuyến mãi, Giảm giá#

Giải pháp (đặt trong C2):

=SUBSTITUTE(SUBSTITUTE(B2,"",""),"#","")

Kết quả: Sản phẩm tốt, Khuyến mãi, Giảm giá.

Bài 3: Thay đổi dấu chấm thành dấu phẩy trong số thập phân

Dữ liệu (cột C):
12.345, 0.99, 123.4567

Giải pháp:

=SUBSTITUTE(C2,".",",")

Kết quả: 12,345, 0,99, 123,4567.

Bài 4: Thay thế lần xuất hiện thứ hai của “/”

Dữ liệu (cột D):
/home/user/docs/file.txt

Mục tiêu: Thay “/” thứ hai bằng “\”.

Giải pháp:

=SUBSTITUTE(D2, "/", "\", 2)

Kết quả: /home\user/docs/file.txt.

6. Những lỗi thường gặp và cách khắc phục

LỗiNguyên nhânCách khắc phục
#VALUE!old_text hoặc new_text không phải là chuỗi, hoặc instance_num không phải số nguyên dương.Kiểm tra dữ liệu, dùng TEXT() để chuyển đổi.
Kết quả không thay đổiold_text không tồn tại trong text (có thể do lỗi chính tả, khoảng trắng thừa).Dùng TRIM, CLEAN, hoặc SEARCH để xác định vị trí.
Thay thế không phân biệt hoa/thườngBạn muốn thay thế chỉ một dạng (ví dụ “ABC” nhưng không “abc”).Kết hợp với EXACT hoặc dùng hàm REPLACE dựa trên vị trí.
Thay thế quá nhiềuKhi không dùng instance_num, hàm sẽ thay thế tất cả.Thêm instance_num hoặc dùng hàm LEFT/RIGHT để giới hạn.
Ký tự đặc biệt không được nhận diện (ví dụ: dấu gạch ngang “‑” khác “-”)Các ký tự Unicode trông giống nhau nhưng mã khác nhau.Sao chép ký tự thực tế từ ô, hoặc dùng CODE() để kiểm tra mã ký tự.

7. Tối ưu hoá hiệu suất khi làm việc với hàng ngàn dòng

Khi bạn áp dụng SUBSTITUTE trên một bảng dữ liệu lớn (hàng nghìn – hàng chục nghìn), có một số chiến lược để giảm thời gian tính toán:

  1. Sử dụng bảng tính tĩnh (Values Only)
  2. Sau khi tính công thức, sao chép và dán dưới dạng Giá trị (Paste Values) để ngừng tính toán lại.
  3. Áp dụng công thức trong Power Query
  4. Power Query (Get & Transform) cho phép thực hiện thay thế trên dữ liệu trước khi tải vào bảng tính, nhanh hơn và không làm nặng Excel.
  5. Hàm mảng (Array Formula) trong Office 365/Excel 2026
  6. Dùng LET để lưu kết quả trung gian, giảm số lần gọi SUBSTITUTE. Ví dụ:

excel =LET( txt, A2, step1, SUBSTITUTE(txt, "-", ""), step2, SUBSTITUTE(step1, " ", ""), step2 )

  1. VBA Macro
  2. Khi cần thực hiện thay đổi trên toàn bộ cột, viết macro:

vba Sub ReplaceBatch() Dim rng As Range, cell As Range Set rng = Range("A2:A10000") For Each cell In rng cell.Value = Replace(cell.Value, "-", "") cell.Value = Replace(cell.Value, " ", "") Next cell End Sub

  1. Sử dụng tính năng “Find & Replace” (Ctrl+H)
  2. Đối với thay đổi đơn giản, công cụ này nhanh hơn vì thực hiện trực tiếp trên sheet mà không tạo công thức.

8. Thực hành nâng cao: Tạo hàm tùy chỉnh (UDF) bằng VBA

Nếu bạn thấy việc lồng nhiều hàm SUBSTITUTE gây rối mắt, có thể tạo một hàm tùy chỉnh cho phép truyền một mảng các cặp thay thế.

Function MultiSub(ByVal txt As String, ByVal oldNew As Variant) As String Dim i As Long Dim result As String result = txt For i = LBound(oldNew, 1) To UBound(oldNew, 1) result = Replace(result, oldNew(i, 1), oldNew(i, 2)) Next i MultiSub = result
End Function

Cách dùng trong Excel:

=MultiSub(A2, {{"-",""}, {" ",""}, {"_","-"}})

Lưu ý: Đối với Excel 365, hàm LAMBDA cũng có thể thực hiện tương tự mà không cần VBA.

9. Tổng kết: Khi nào và làm sao khai thác tối đa hàm SUBSTITUTE

  • Hiểu rõ yêu cầu: Xác định bạn muốn thay thế toàn bộ hay chỉ một lần.
  • Chuẩn bị dữ liệu: Dùng TRIM, CLEAN để loại bỏ khoảng trắng thừa, ký tự không hiển thị.
  • Kết hợp hàm: SUBSTITUTE + TEXT, DATE, LEFT/RIGHT, LET, IFERROR để tạo công thức mạnh mẽ.
  • Kiểm tra kết quả: Luôn dùng IFERROR hoặc IF để tránh lỗi khi old_text không tồn tại.
=IFERROR(SUBSTITUTE(A2, "-", ""), A2)
  • Tối ưu cho dữ liệu lớn: Sử dụng Power Query, VBA hoặc chuyển sang giá trị tĩnh sau khi tính toán.

Với kiến thức chi tiết trên, bạn đã nắm vững cách sử dụng hàm THAY THẾ (SUBSTITUTE) trong mọi tình huống: từ việc làm sạch dữ liệu cơ bản, chuẩn hoá định dạng, cho tới các giải pháp phức tạp kết hợp nhiều hàm và macro. Hãy áp dụng ngay vào dự án của mình và trải nghiệm sự tăng tốc đáng kể trong công việc xử lý dữ liệu!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận