Có thể bạn quan tâm: Tổng Hợp File Excel Tính Toán Kết Cấu
Giới thiệu
Trong công việc kế toán, tài chính và quản lý doanh nghiệp, việc chuyển đổi số tiền sang dạng chữ thường là một yêu cầu thiết yếu. Đó không chỉ là việc tuân thủ quy định pháp lý khi lập báo cáo, hợp đồng, hay hóa đơn mà còn giúp giảm thiểu sai sót khi đọc và ghi nhớ số liệu. Khi sử dụng Excel – công cụ bảng tính được phổ biến nhất trên toàn âge – việc viết một công thức hoặc macro để tự động chuyển đổi số thành chữ giúp tiết kiệm thời gian, tăng tính chính xác và nâng cao năng suất làm việc.
Trong bài viết này, chúng ta sẽ khám phá chi tiết cách tự nhảy số tiền bằng chữ trong Excel bằng nhiều phương pháp khác nhau: từ công thức đơn giản, VBA tùy chỉnh, đến các add‑in và công cụ hỗ trợ. Bạn sẽ được hướng dẫn từng bước chi tiết, cùng với những mẹo, lưu ý và giải pháp xử lý lỗi thường gặp. Cuối bài, bạn sẽ có đủ kiến thức để áp dụng ngay vào các bảng tính của mình, dù bạn là lập trình viên nghiệp dư hay chuyên gia tài chính.
Lưu ý: Độ dài bài viết này đạt hơn 1500 từ, vì vậy bạn sẽ nhận được một tài liệu chi tiết, có thể lưu lại và tham khảo khi cần.
Có thể bạn quan tâm: Tổng Hợp Các Hàm Thông Dụng Trong Excel
1. Tại sao cần chuyển đổi số tiền sang chữ trong Excel?
- Tuân thủ pháp lý: Theo quy định của pháp luật Việt Nam, trong các văn bản hợp đồng, hóa đơn, kê khai thuế, số tiền phải được ghi bằng chữ để tránh hiểu lầm.
- Tăng tính chính xác: Khi người dùng đọc “một trăm không trăm”(Giải) có thể hiểu sai. Việc chuyển thành chữ giúp xác thực số liệu ngay lập tức.
- Dễ dàng kiểm tra và đối chiếu: Khi có cả dạng số và dạng chữ, người kiểm tra có thể so sánh nhanh chóng.
- Nâng cao tính chuyên nghiệp: Các báo cáo tài chính, thư mời, hợp đồng có dạng chữ cho thấy sự nghiêm túc và chuyên nghiệp.
Có thể bạn quan tâm: Tổ Hợp Phím Ctrl + Shift + Enter Trong Excel: Cách Sử Dụng, Lợi Ích Và Những Lưu Ý Quan Trọng
2. Phương pháp 1: Sử dụng công thức Excel (PHƯƠNG THỨC CHÍNH)
2.1 Công thức Mảng: TEXT + CONCATENATE
Excel không cung cấp hàm nội tại để chuyển số thành chữ. Tuy nhiên, chúng ta có thể tạo một mảng các chuỗi chuẩn và dùng hàm CONCATENATE (hoặc TEXTJOIN trong Excel 2026+) để kết hợp.
Ví dụ:
| A (Số) | B (Chữ) |
|---|---|
| 12345 | =TEXTJOIN(” “,TRUE,IF(A1>=1000,CONCATENATE(INT(A1/1000),” nghìn “),””),IF(MOD(INT(A1/100),10)>0,CONCATENATE(INT(MOD(A1/100,10)),” trăm “),””),IF(MOD(A1, компонент)>0, …)) |
Mặc dù công thức này rất dài, nhưng nó hoàn toàn không cần VBA. Tuy nhiên, với số lượng lớn dữ liệu, công thức sẽ gây chậm.
Ưu điểm: Không cần cài đặt thêm, có thể tùy chỉnh thay đổi.
Nhược điểm: Phức tạp, dễ lỗi khi chỉnh sửa, không linh hoạt với tiền tệ đa dạng.
2.2 Hàm IF lồng nhau
Bạn có thể viết một chuỗi IF lồng nhau để chuyển từng phần (triệu, nghìn, trăm…) sang chữ. Dưới đây là một mẫu hàm đơn giản cho đồng Việt Nam (VND) đến 999,999,999:
=IF(A1=0,"không đồng", IF(A1>=1000000, IF(MOD(INT(A1/1000000),10)=0, CONCATENATE(INT(A1/1000000)," triệu ",CONCATENATE( IF(MOD(INT(A1/1000),100)=0,"",IF(MOD(INT(A1/1000),100)>=10, " ", ""))), CONCATENATE(INT(A1/1000000)," triệu ",...)) , IF(A1>=1000, ... ) , ... ))
Mặc dù vẫn dài, nhưng vì không dùng VBA, nên dễ triển khai nhanh cho bảng tính nhỏ.
3. Phương pháp 2: Sử dụng VBA Custom Function
VBA cho phép bạn viết một hàm tùy chỉnh dễ sử dụng trong Excel, giống như hàm SUM hay AVERAGE. Với tính linh hoạt cao, bạn có thể hỗ trợ nhiều loại tiền tệ, định dạng, và xử lý lỗi.
3.1 Tạo một Module và viết hàm CurrencyToWords
Option Explicit Public Function CurrencyToWords(ByVal num As Double) As String Dim result As String result = ConvertNumberToWords(num) CurrencyToWords = result
End Function Private Function ConvertNumberToWords(ByVal num As Double) As String Dim units() As String Dim tens() As String Dim scales() As String Dim i As Integer, n As Long ' Định nghĩa mảng các số units = Split("không một hai ba bốn năm sáu bảy tám chín", " ") tens = Split("không mười hai ba bốn năm sáu bảy tám chín", " ") scales = Split("đồng nghìn triệu tỷ", " ") If num = 0 Then ConvertNumberToWords = "không đồng" Exit Function End If n = CLng(num) ConvertNumberToWords = "" ' Xử lý từng đoạn (triệu, nghìn, ...) For i = UBound(scales) To 0 Step -1 Dim modVal As Long modVal = n \ 10 ^ (i 3) If modVal > 0 Then ConvertNumberToWords = ConvertNumberToWords & NumberToWords(modVal) & " " & scales(i) & " " n = n Mod 10 ^ (i 3) End If Next i ' Xử lý phần nhỏ hơn 1000 If n > 0 Then ConvertNumberToWords = ConvertNumberToWords & NumberToWords(n) & " " End If ' Loại bỏ dấu cách thừa ConvertNumberToWords = Trim(ConvertNumberToWords) & "đồng"
End Function Private Function NumberToWords(ByVal n As Long) As String Dim words As String Dim hundreds As Long, tensVal As Long, unitsVal As Long hundreds = n \ 100 tensVal = (n \ 10) Mod 10 unitsVal = n Mod 10 If hundreds > 0 Then words = words & units(hundreds) & " trăm" If tensVal = 0 And unitsVal > 0 Then words = words & " lẻ" End If End If If tensVal > 1 Then words = words & " " & tens(tensVal) & " mươi" If unitsVal > 0 Then words = words & " " & units(unitsVal) End If ElseIf tensVal = 1 Then words = words & " mười" If unitsVal > 0 Then words = words & " " & units(unitsVal) End If Else If unitsVal > 0 Then words = words & " " & units(unitsVal) End If End If NumberToWords = words
End Function
Cách sử dụng: Trong ô Excel, nhập =CurrencyToWords(A1), trong đó A1 chứa số tiền. Hàm này sẽ trả về chuỗi chữ đầy đủ, ví dụ: =CurrencyToWords(123456) → một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng.
3.2 Thiết lập tùy chỉnh
- Thêm tiền tệ khác: Bạn có thể mở rộng hàm
ConvertNumberToWordsđể nhận tham số thứ hai là tiền tệ, ví dụ=CurrencyToWords(A1, "USD") goodies, và điều kiện trong hàm sẽ xác định đơn vị cuối cùng (“đồng”, “đô la”). - Định dạng số: Nếu số có dấu phẩy, bạn cần biến đổi thành số thực bằng
CDbl. Đảm bảo dữ liệu nhập vào không có ký tự đặc biệt.
3.3 Lưu trữ các macro
- Mở Excel, nhấn
Alt + F11để mở Visual Basic Editor. - Chọn
Insert > Module, dán mã ở trên. - Lưu file dưới dạng
Macro-Enabled Workbook (.xlsm)để macro luôn hoạt động trong tương lai.
3.4 Kiểm tra lỗi
- Chuyển đổi số lớn: Nếu số vượt quá
Long(2,147,483,647), sử dụngDoublehoặcCurrencyđể lưu trữ, nhưng cần điều chỉnh hàmConvertNumberToWordsđể xử lý phần thập phân. - Thập phân: Nếu cần chuyển đổi phần thập phân (đúng như “00/100” trong hóa đơn), bạn có thể thêm một đoạn xử lý
DecimalPart = num - Int(num)và kết hợp vớiConvertNumberToWords.
4. Phương pháp 3: Sử dụng Add-In và Công cụ Bên Thứ Ba
Nếu bạn làm việc trong môi trường doanh nghiệp, có thể cài đặt add-in chuyên dụng để tự động chuyển đổi số thành chữ. Điều này tiết kiệm thời gian vì bạn không cần viết macro.
4.1 Add-In “Number to Words”
- Tải add-in từ trang chính thức của nhà cung cấp (ví dụ:
https://www.numbertowords.com/繁体). - Cài đặt vào Excel:
File > Options > Add-Ins > Excel Add-ins > Browse. - Sau khi cài, một công thức mới sẽ xuất hiện:
=NUMBERTOWORDS(A1).
Add-in này thường hỗ trợ nhiều ngôn ngữ, đồng thời có tính năng xử lý lô hàng, số thập phân, và định dạng tài chính.
4.2 Google Sheets và Office Scripts

Có thể bạn quan tâm: Tổng Hợp Nhiều File Excel Thành 1 File: Hướng Dẫn Chi Tiết & Công Cụ Tiện Ích
Nếu bạn muốn làm việc trên nền tảng đám mây, Google Sheets hỗ trợ hàm GOOGLEFINANCE, nhưng không có hàm chuyển số sang chữ. Tuy nhiên, bạn có thể viết Google Apps Script tương tự VBA:
function NUMBER_TO_WORDS(num) { var units = "không", "một", "hai", ...; var tens = "không", "mười", "hai", ...; // logic tương tự... return result;
}
Sau khi viết, công thức trong ô: =NUMBER_TO_WORDS(A1).
4.3 Công cụ trực tuyến
Nhiều trang web cung cấp dịch vụ chuyển đổi số thành chữ miễn phí, ví dụ: https://vietnamtrans.com/ прием. Bạn chỉ cần sao chép số vào, nhận được kết quả. Tuy nhiên, việc tự động trong Excel vẫn hữu ích hơn đối với koristi.
5. Tối ưu hóa và Lưu trữ
5.1 Đặtნების Vị trí của hàm
Khi viết hàm VBA, bạn nên đặt nó trong một module riêng biệt, tránh trùng lặp tên hàm. Nếu bạn có nhiều hàm, hãy đặt trong thư mục VBAProject.
5.2 Sử dụng Range Object để giảm phép tính
Nếu bạn cần chuyển đổi hàng ngàn ô, hãy dùng .Selection.Value và vòng lặp, tránh gọi hàm quá nhiều lần:
Dim rng As Range, cell As Range
Set rng = Range("A2:A1000")
For Each cell In rng cell.Offset(0, 1).Value = CurrencyToWords(cell.Value)
Next cell
5.3 Xử lý lỗi “#NAME?” hoặc “#REF!”
- Kiểm tra rằng file được lưu dưới dạng
.xlsm. - Đảm bảo macro được bật:
File > Options > Trust Center > Trust Center Settings > Macro Settings > Enable all macros. - Kiểm tra tên hàm chính xác.
6. Mở rộng: Xử lý số lẻ, chữ số thập phân, và tiền tệ quốc tế
6.1 Số lẻ
Nếu bạn muốn chuyển số lẻ, hãy chỉnh hàm NumberToWords sao cho chữ “lẻ” xuất hiện khi có phần trăm không có mười. Ví dụ: 101 → một trăm lẻ một.
6.2 Thập phân
Nếu cần chuyển phần thập phân, bạn có thể chia số ngày theo quy tắc:
– num = 1234.56 → một nghìn hai trăm ba mươi bốn đồng, năm mươi sáu xu.
Cách thực hiện:
Dim intPart As Long, decPart As Long
intPart = Int(num)
decPart = Round((num - intPart) 100, 0)
result = ConvertNumberToWords(intPart) & " đồng, " & ConvertNumberToWords(decPart) & " xu"
6.3 Tiền tệ quốc tế
Hàm CurrencyToWords có thể nhận tham số thứ hai là mã tiền tệ:
Normalizer = CurrencyToWords(A1, "USD")
Trong hàm, thêm logic:
Select Case currencyCode Case "USD": unit = "đô la" Case "EUR": unit = "euro" Case "JPY": unit = "yen" Case Else: unit = "đồng"
End Select
7. 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 |
|---|---|---|
#VALUE! | Ô chứa ký tự không phải số | Kiểm tra dữ liệu, chuyển đổi thành số bằng VALUE() |
#NAME? | Hàm chưa được định nghĩa | Đảm bảo macro đã được lưu, macro được bật |
| Chữ “bốn” xuất hiện làm “tư” | Loại bỏ từ “bốn” khi có số 4 trong phần trăm | Thêm điều kiện trong NumberToWords |
| Thừa dấu “đồng” | Hàm ConvertNumberToWords trả về “đồng” hai lần | Kiểm tra Trim價格 và EndsWith |
| Hiệu năng chậm | Đối với 10k+ ô | Sử dụng vòng lặp For Each hoặc nạp bảng dữ liệu vào Dictionary |
8. Ví dụ thực tế – Tạo bảng tính tự động chuyển đổi
Giả sử bạn có bảng tính như sau:
| A (Số tiền) | B (Số tiền bằng chữ) |
|---|---|
| 1000 | =CurrencyToWords(A2) |
| 25000 | =CurrencyToWords(A3) |
| 1234567 | =CurrencyToWords(A4) |
Sau khi nhập công thức, Excel sẽ tự động hiển thị:
| A (Số tiền) | B (Số tiền bằng chữ) |
|---|---|
| 1000 | một nghìn đồng |
| 25000 | hai mươi lăm nghìn đồng |
| 1234567 | một triệu hai trăm ba mươi bốn nghìn năm trăm sáu mươi bảy đồng |
Bạn có thể kéo công thức xuống để áp dụng cho hàng trăm dòng.
9. Kết luận
Việc tự nhảy số tiền bằng chữ trong Excel là một kỹ năng quan trọng, giúp tăng tính chính xác và chuyên nghiệp trong các báo cáo tài chính, hợp đồng, và văn bản kế toán. Dù bạn là người mới bắt đầu hay chuyên gia, các phương pháp dưới đây – từ công thức đơn giản, VBA tùy chỉnh đến add‑in chuyên dụng – đều đáp ứng được nhu cầu của bạn.
- Nếu bạn không muốn viết macro: Sử dụng công thức lồng nhau hoặc add‑in.
- Nếu bạn cần tính linh hoạt và mở rộng: Viết hàm VBA
CurrencyToWords. - Nếu bạn làm việc trong môi trường doanh nghiệp: Tận dụng add‑in, hoặc công cụ trực tuyến.
Nhớ lưu file dưới định dạng xlsm, bật macro và kiểm tra kỹ dữ liệu nhập vào. Sau khi áp dụng, bạn sẽ thấy công việc của mình trở nên nhanh hơn, chính xác hơn và chuyên nghiệp hơn nhiều.
Hãy thử áp dụng ngay cách chuyển đổi số thành chữ trong bảng tính của mình, và chia sẻ trải nghiệm của bạn!

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