Có thể bạn quan tâm: Cách Thêm Power Query Vào Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
Giới thiệu
Trong nhiều lĩnh vực tài chính, kế toán, ngân hàng và pháp lý, việc chuyển đổi số sang dạng chữ là một yêu cầu bắt buộc. Khi làm việc với Excel — công cụ mạnh mẽ nhất để quản lý dữ liệu số, báo cáo tài chính và phân tích — việc tự động chuyển số sang từ giúp giảm thiểu sai sót, tăng tính chuyên nghiệp và tiết kiệm thời gian. Bài viết này sẽ giới thiệu chi tiết các phương pháp làm điều này trong Excel, từ các công thức đơn giản, VBA tùy chỉnh, Power Query, cho tới các add-in bên thứ ba. Bạn sẽ học cách áp dụng từng phương pháp, những ưu điểm, hạn chế, và cách tránh các lỗi thường gặp.
Có thể bạn quan tâm: Cách Thêm Nhiều Dòng Trong Excel Nhanh Chóng Và Hiệu Quả
Tại sao cần chuyển số sang từ trong Excel?
- Độ tin cậy cao: Khi số được ghi bằng chữ, người đọc khó có thể chỉnh sửa hoặc nhầm lẫn. Điều này đặc biệt quan trọng trong hợp đồng, hóa đơn hoặc báo cáo tài chính, nơi mỗi sai sót có thể gây hậu quả pháp lý hoặc tài chính.
- Tiêu chuẩn pháp lý: Nhiều quy định pháp lý yêu cầu số tiền phải được ghi bằng chữ trong tài liệu hợp pháp, ví dụ như trong hợp đồng mua bán, hợp đồng vay, hoặc biên lai thu chi.
- Cải thiện giao diện: Một bảng tính có cả số và chữ thường dễ đọc hơn, giúp người dùng nhanh chóng nhận biết giá trị và tránh nhầm lẫn.
- Tự động hóa quy trình: Việc viết công thức hoặc macro để chuyển đổi số sang chữ giúp giảm thiểu công việc thủ công và tránh sai sót do nhập liệu thủ công.
Có thể bạn quan tâm: Cách Thêm Nút Macro (macro Button) Vào Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
Phương pháp 1: Sử dụng công thức Excel nội bộ
1.1. Công thức đơn giản với TEXT và CHOOSE
Excel không có hàm tích hợp để chuyển số thành chữ. Tuy nhiên, bạn có thể tạo một công thức phức tạp bằng cách kết hợp các hàm TEXT, INT, MOD, CHOOSE, IF, v.v. Dưới đây là một ví dụ chuyển số từ 0 đến 999:
=IF(A1=0,"không","")
& IF(INT(A1/100)>0,CHOOSE(INT(A1/100)+1,"một trăm","hai trăm","ba trăm","bốn trăm","năm trăm","sáu trăm","bảy trăm","tám trăm","chín trăm"),"")
& IF(MOD(INT(A1/10),10)>1,CHOOSE(MOD(INT(A1/10),10)+1,"mười hai","mười ba","mười bốn","mười lăm","mười sáu","mười bảy","mười tám","mười chín"),IF(MOD(A1,10)>0,CHOOSE(MOD(A1,10)+1,"một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),""))
Phương pháp này khá hạn chế: chỉ áp dụng được cho số nhỏ, cần chỉnh sửa nếu muốn mở rộng lên hàng nghìn, triệu, tỷ.
1.2. Công thức mở rộng với TEXTJOIN và SEQUENCE
Nếu bạn đang dùng Excel 365 hoặc 2026, có thể tận dụng hàm TEXTJOIN và SEQUENCE để viết một công thức linh hoạt hơn. Ví dụ:
=TEXTJOIN(" ",TRUE, IF(SEQUENCE(1,1,0,1)>0,"","không"), CHOOSE(INT(A1/1000000000)+1,"","một tỷ","hai tỷ","ba tỷ","bốn tỷ","năm tỷ","sáu tỷ","bảy tỷ","tám tỷ","chín tỷ"), CHOOSE(INT(MOD(A1,1000000000)/100000000)+1,"","một trăm","hai trăm","ba trăm","bốn trăm","năm trăm","sáu trăm","bảy trăm","tám trăm","chín trăm"), ...
)
Tuy nhiên, công thức sẽ rất dài và khó bảo trì. Vì vậy, phương pháp này thực sự chỉ phù hợp với những người có kinh nghiệm sâu trong Excel và muốn tránh VBA.
Phương pháp 2: Sử dụng VBA tùy chỉnh
VBA (Visual Basic for Applications) cho phép tạo hàm người dùng (UDF) để chuyển số sang chữ một cách linh hoạt và dễ bảo trì. Dưới đây là một ví dụ chi tiết.
2.1. Tạo hàm NumberToWords
- Mở Excel, nhấn
Alt + F11để mở Visual Basic Editor. - Chèn một module mới:
Insert > Module. - Dán đoạn mã sau vào module:
Function NumberToWords(ByVal MyNumber As Variant) As String Dim UnitsArray, TensArray, ScalesArray Dim Words As String Dim i As Integer, j As Integer, k As Integer Dim TempNumber As String Dim TempWord As String If IsNumeric(MyNumber) Then MyNumber = Trim(CStr(MyNumber)) Else NumberToWords = "Error: Input not numeric" Exit Function End If UnitsArray = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") TensArray = Array("", "", "hai mươi", "ba mươi", "bốn mươi", "năm mươi", "sáu mươi", "bảy mươi", "tám mươi", "chín mươi") ScalesArray = Array("", "nghìn", "triệu", "tỷ") If Len(MyNumber) > 12 Then NumberToWords = "Too big" Exit Function End If ' Insert leading zeros to make length multiple of 3 TempNumber = Right("000000000000" & MyNumber, 12) For i = 1 To 4 k = 3 (i - 1) TempWord = "" ' Hundred place If Mid(TempNumber, k + 1, 1) <> "0" Then TempWord = UnitsArray(CInt(Mid(TempNumber, k + 1, 1))) & " trăm " End If ' Tens and units Dim t As Integer, u As Integer t = CInt(Mid(TempNumber, k + 2, 1)) u = CInt(Mid(TempNumber, k + 3, 1)) If t = 1 Then Select Case u Case 0: TempWord = TempWord & "mười " Case 1: TempWord = TempWord & "mười một " Case 2: TempWord = TempWord & "mười hai " Case 3: TempWord = TempWord & "mười ba " Case 4: TempWord = TempWord & "mười bốn " Case 5: TempWord = TempWord & "mười lăm " Case 6: TempWord = TempWord & "mười sáu " Case 7: TempWord = TempWord & "mười bảy " Case 8: TempWord = TempWord & "mười tám " Case 9: TempWord = TempWord & "mười chín " End Select ElseIf t > 1 Then TempWord = TempWord & TensArray(t) & " " If u > 0 Then TempWord = TempWord & UnitsArray(u) & " " End If Else If u > 0 Then TempWord = TempWord & UnitsArray(u) & " " End If End If If TempWord <> "" Then TempWord = TempWord & ScalesArray(i - 1) & " " Words = TempWord & Words End If Next i NumberToWords = Trim(Words)
End Function
- Lưu công việc và quay lại Excel.
2.2. Sử dụng hàm
Giả sử ô A1 chứa số 123456789. Trong ô B1 nhập:
=NumberToWords(A1)
Kết quả sẽ là:
một trăm hai mươi ba triệu bốn trăm năm mươi sáu nghìn bảy trăm tám mươi chín
2.3. Tùy chỉnh thêm
- Chèn “đồng” hoặc “đồng chẵn”: Bạn có thể sửa hàm để thêm “đồng” sau số.
- Xử lý số thập phân: Thêm phần xử lý sau dấu chấm phẩy để chuyển phần thập phân sang chữ (ví dụ “lẻ một”).
- Chuyển sang tiếng Anh: Thay đổi mảng
UnitsArrayvàTensArraysang tiếng Anh.
VBA cung cấp sự linh hoạt tối đa và dễ bảo trì hơn so với công thức phức tạp.
Phương pháp 3: Power Query (Get & Transform)
Power Query là công cụ mạnh mẽ để làm sạch, biến đổi dữ liệu trong Excel 2026 trở đi. Bạn có thể tạo một “Custom Column” sử dụng M code để chuyển số sang chữ.
3.1. Tạo hàm trong Power Query
- Chọn dữ liệu, vào
Data > Get & Transform Data > From Table/Range. - Trong Power Query Editor, vào
Add Column > Custom Column. - Dán đoạn M code dưới đây:
let NumberToWords = (num as number) as text => let Units = {"", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"}, Tens = {"", "", "hai mươi", "ba mươi", "bốn mươi", "năm mươi", "sáu mươi", "bảy mươi", "tám mươi", "chín mươi"}, Scales = {"", "nghìn", "triệu", "tỷ"}, Pad = Text.PadStart(Text.From(num), 12, "0"), Groups = List.Transform(List.Numbers(0,4), each Text.Middle(Pad, 3(_, 3))), Words = List.Transform(Reversed(Groups), (grp, idx) => let h = Number.FromText(Text.Middle(grp, 0,1)), t = Number.FromText(Text.Middle(grp, 1,1)), u = Number.FromText(Text.Middle(grp, 2,1)), Hundred = if h > 0 then Units{h} & " trăm " else "", TenUnit = if t = 1 then if u = 0 then "mười " else "mười " & Units{u} & " " else if t > 1 then Tens{t} & " " & if u > 0 then Units{u} & " " else "" else if u > 0 then Units{u} & " " else "", Scale = if idx > 0 then " " & Scales{idx} else "", GroupText = Hundred & TenUnit & Scale in Text.Trim(GroupText) ), Result = Text.Trim(Text.Combine(Reversed(Words), " ")) in Result
in NumberToWords
- Gọi hàm trong Custom Column:
=NumberToWords(Column1).
3.2. Lưu và áp dụng
Sau khi áp dụng, Power Query sẽ tạo cột mới chứa số dưới dạng chữ. Bạn có thể tải dữ liệu trở lại Excel bằng cách Close & Load.
3.3. Ưu và nhược điểm

Có thể bạn quan tâm: Lỗi “ambiguous Name Detected” Trong Excel: Nguyên Nhân, Hậu Quả Và Cách Khắc Phục Chi Tiết
- Ưu điểm: Không cần VBA, có thể tái sử dụng trong bất kỳ bảng tính nào.
- Nhược điểm: Power Query có thể khó hiểu đối với người dùng mới, và hỗ trợ tùy chỉnh ít hơn so với VBA.
Phương pháp 4: Add-in và công cụ bên thứ ba
4.1. Add-in “Number to Words”
Nhiều nhà phát triển cung cấp add-in cho Excel, như “Number to Words” của Ablebits hoặc “Excel Add-in: Convert Numbers to Words”. Bạn chỉ cần cài đặt add-in, rồi sử dụng hàm mới được cung cấp (ví dụ =TextFromNumber(A1)).
Ưu điểm: nhanh chóng, không cần viết code. Nhược điểm: phụ thuộc vào phần mềm của bên thứ ba, chi phí khi sử dụng phiên bản trả phí.
4.2. Công cụ trực tuyến
Có số lượng lớn trang web cho phép nhập số và nhận kết quả dạng chữ. Bạn có thể sao chép kết quả vào Excel. Tuy nhiên, phương pháp này không tự động và không thực sự phù hợp cho quy trình làm việc hàng loạt.
Các lỗi thường gặp và cách khắc phục
| Lỗi | Nguyên nhân | Giải pháp |
|---|---|---|
| Hàm trả về “Error: Input not numeric” | Dữ liệu không phải số, có ký tự đặc biệt | Kiểm tra dữ liệu đầu vào, loại bỏ ký tự không hợp lệ |
| Kết quả thiếu “trăm” | Phần “hundred” bị bỏ qua | Kiểm tra đoạn mã xử lý phần trăm, chắc chắn không bỏ qua khi giá trị = 0 |
| Kết quả “đô la” thay vì “đồng” | Phần hậu tố chưa được đưa vào | Thêm hậu tố “đồng” vào cuối hàm, hoặc tùy chỉnh thêm trong add-in |
| Kết quả sai khi có số thập phân | Không xử lý phần thập phân | Thêm phần mã sau dấu chấm phẩy, chuyển phần thập phân sang chữ (ví dụ “lẻ một”) |
| Hàm chạy chậm khi áp dụng cho hàng nghìn ô | VBA không được tối ưu | Sử dụng hàm vectorized, hoặc chuyển sang Power Query |
Mẹo và thủ thuật
- Sử dụng
TEXTvới định dạng tùy chỉnh: Nếu bạn muốn số được hiển thị dưới dạng “đồng chẵn”, có thể kết hợp công thứcTEXT(A1,"#,##0") & " đồng chẵn". - Tự động cập nhật khi chỉnh sửa: Khi dùng VBA, bật tính năng
Application.EnableEvents = Trueđể tự động cập nhật khi dữ liệu thay đổi. - Tối ưu Power Query: Sử dụng
Table.TransformColumnsđể áp dụng hàm cho nhiều cột cùng lúc, giảm số lần tải dữ liệu. - Ghi nhận lỗi: Trong VBA, sử dụng
On Error Resume NextvàMsgBoxđể hiển thị lỗi rõ ràng.
Ứng dụng thực tế
4.1. Hóa đơn điện tử
Khi xuất hóa đơn điện tử, phần “số tiền” cần được ghi rõ bằng chữ để tránh tranh chấp. Bạn có thể tạo một template Excel với cột “Số tiền” và cột “Số tiền bằng chữ” sử dụng hàm NumberToWords.
4.2. Báo cáo tài chính
Trong báo cáo tài chính, phần “tổng cộng” thường cần ghi bằng chữ. Dùng Power Query để tự động chuyển đổi số thành chữ trong phần “Tổng cộng” của báo cáo.
4.3. Hợp đồng vay
Trong hợp đồng vay, số tiền vay được ghi bằng chữ. Bạn có thể tạo một macro trong Excel để tự động cập nhật giá trị số và chữ khi người dùng nhập số.
4.4. Phát hành chứng khoán
Trong chứng khoán, khi ghi nhận số lượng cổ phiếu và giá trị, có thể cần ghi số tiền bằng chữ trong các tờ khai. Sử dụng add-in hoặc VBA giúp tiết kiệm thời gian.
Kết luận
Việc chuyển số sang dạng chữ trong Excel là một thao tác quan trọng, giúp tăng tính chính xác, chuyên nghiệp và tuân thủ quy định pháp lý. Mặc dù Excel không có hàm tích hợp, nhưng bạn có thể dễ dàng đạt được mục tiêu này thông qua nhiều phương pháp khác nhau: công thức phức tạp, VBA tùy chỉnh, Power Query, hoặc add-in bên thứ ba. Mỗi phương pháp có ưu nhược điểm riêng, tùy thuộc vào nhu cầu, kỹ năng và môi trường làm việc của bạn.
- Nếu bạn muốn giải pháp nhanh nhất, miễn phí và không phụ thuộc vào phần mềm bên thứ ba, hãy thử VBA.
- Nếu bạn đã quen thuộc với Power Query, đây là một lựa chọn không cần viết code.
- Nếu bạn cần giải pháp “sẵn sàng” và không muốn tự viết code, add-in là lựa chọn phù hợp.
Bằng cách lựa chọn phương pháp phù hợp nhất, bạn sẽ có thể tự động chuyển đổi số sang chữ một cách chính xác, tiết kiệm thời gian và nâng cao chất lượng công việc trong Excel.

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