Trong công việc quản lý tài chính, lập báo cáo, lập bảng kê và xử lý dữ liệu tài chính, việc chuyển đổi số thành chữ là một thao tác phổ biến. Đối với người Việt Nam, đặc biệt là trong các tài liệu kế toán, hợp đồng, hay hóa đơn, việc viết số thành chữ theo quy tắc tiếng Việt (có thể bao gồm chữ “đồng” hay “đồng chẵn”) rất quan trọng để tránh nhầm lẫn, tranh chấp và làm tăng tính chuyên nghiệp của tài liệu.
Excel, với tính năng linh hoạt và mạnh mẽ, luôn là công cụ được nhiều người dùng tin dùng để thực hiện các tác vụ tính toán. Tuy nhiên, mặc dù Excel cung cấp rất nhiều hàm dữ liệu, hàm chuyển đổi số thành chữ không có sẵn. Để giải quyết vấn đề này, chúng ta có thể tự xây dựng hàm tùy chỉnh bằng VBA (Visual Basic for Applications) hoặc tìm các hàm đã được viết sẵn từ cộng đồng.
Bài viết này sẽ hướng dẫn chi tiết cách tạo hàm VND trong Excel để chuyển số thành chữ tiếng Việt, các cách tùy chỉnh, cách mở rộng, cách tối ưu hoá, và những lưu ý khi áp dụng trong thực tế.
Có thể bạn quan tâm: Hàm Tính Tỷ Lệ Tăng Trưởng Trong Excel: Cách Sử Dụng, Ví Dụ Và Mẹo Thực Tiễn
1. Tại sao cần hàm VND đổi số ra chữ trong Excel?
1.1. Đối tượng sử dụng
- Nhân viên kế toán và tài chính: Viết số thành chữ trong báo cáo, bảng kê, hợp đồng, hóa đơn.
- Nhà quản trị dữ liệu: Kiểm tra tính hợp lệ của dữ liệu số, chuyển đổi số thành chuỗi chữ để hiển thị trong report.
- Nhà phát triển phần mềm: Tích hợp tính năng trong các ứng dụng doanh nghiệp, ERP, hoặc các add-in cho Excel.
1.2. Lợi ích、不được
- Tránh sai sót: Khi viết số bằng tay, dễ nhầm lẫn giữa các chữ số, đặc biệt trong số lớn. Hàm tự động giúp tránh lỗi.
- Tiết kiệm thời gian: Thay vì làm thủ công hoặc sử dụng công cụ pils, hàm cho phép chuyển đổi nhanh chóng ngay trong ô tính.
- Tính nhất quán: Định dạng chữ viết nhất quán, tuân thủ quy tắc ngôn ngữ và chuẩn kế toán.
- Tích hợp dữ liệu: Dữ liệu có thể được xuất ra PDF, Word, 易乐 vào tài liệu báo cáo.
Có thể bạn quan tâm: Tính Tổng Nhiều Điều Kiện Trong Excel: Hướng Dẫn Chi Tiết Và Các Phương Pháp Thực Tế
2. Cấu trúc cơ bản của số thành chữ tiếng Việt
Trước khi viết hàm, chúng ta cần hiểu ngữ pháp và cấu trúc của cách viết số bằng chữ:
- Các số từ 0-9:
- 0: không, không có, (trong số có chữ số cuối là 0, thường không ghi).
- 1: một
- 2: hai
- 3: ba
- 4: bốn
- 5: năm
- 6: sáu
- 7: bảy
- 8: tám
9: chín
Các nhóm số (từ 10-99):
- 10: mười
- 11: mười một
- 12: mười hai
- 21: hai mươi mốt
- 25: hai mươi lăm
35: ba mươi lăm
cuối cùng, có quy tắc “lăm” và “mốt” thay đổi khi đứng cuối nhóm.Các lớp số:
- 100: một trăm
- 1000: một nghìn
- 1,000,000: một triệu
1,000,000,000: một tỷ
Chữ “đồng”: Thêm vào sau số khi viết tiền tệ.
- Chữ “đồng chẵn”: Được thêm khi số là số nguyên, thường trong hóa đơn, để tránh trốn thuế.
Có thể bạn quan tâm: Hình Thức Tính Trung Bình Có Điều Kiện Trong Excel: Cách Tối Ưu Phân Tích Dữ Liệu
3. Các phương pháp chuyển đổi
Có nhiều cách để thực hiện chuyển đổi số thành chữ trong Excel. Chúng ta sẽ phân loại theo hai nhóm chính:
- Sử dụng hàm VBA tùy chỉnhcolumns
- Sử dụng công thức phức tạp (array formulas) trong //
Excel
3.1. Phương pháp 1: Hàm VBA
3.1.1. Ưu điểm
- Dễ dàng mở rộng: Có thể tự định nghĩa quy tắc, thêm các từ ngữ đặc biệt.
- Hiệu suất tốt: VBA chạy nhanh, đặc biệt khi xử lý hàng triệu dòng.
- Đơn giản khi sử dụng: Gọi hàm giống với bất kỳ hàm nội bộ nào.
3.1.2. Cài đặt
- Mở trình soạn thảo VBA
- Nhấn
Alt + F11trong Excel. Chọn
Insert > Moduleđể tạo module mới.Dán mã VBA
- Dưới đây là một phiên bản cơ bản, có thể tùy chỉnh thêm.
Option Explicit ' Hàm chính: chuyển số thành chữ VND
Public Function VND(ByVal Number As Variant, Optional ByVal WithCurrency As Boolean = True, Optional ByVal IsIntegerOnly As Boolean = True) As String Dim strResult As String If IsNumeric(Number) = False Then VND = "Không phải số" Exit Function End If ' Số âm If Number < 0 Then VND = "Âm " & VND(Abs(Number), WithCurrency, IsIntegerOnly) Exit Function End If ' Kiểm tra số lớn If Number > 9999999999999999# Then VND = "Số quá lớn" Exit Function End If strResult = ConvertNumberToVietnamese(Number) If WithCurrency Then If IsIntegerOnly And Number = Int(Number) Then strResult = strResult & " đồng chẵn" Else strResult = strResult & " đồng" End If End If VND = strResult
End Function ' Hàm nội bộ chuyển số thành chữ tiếng Việt
Private Function ConvertNumberToVietnamese(ByVal Number As Double) As String Dim Units() As String Units = Array("", "nghìn", "triệu", "tỷ", "nghìn tỷ", "triệu tỷ", "tỷ tỷ") Dim i As Long Dim n As Long Dim part As String Dim result As String result = "" i = 0 Do While Number > 0 n = Number Mod 1000 Number = Number \ 1000 If n > 0 Then part = ConvertThreeDigits(n) If Units(i) <> "" Then part = part & " " & Units(i) If result <> "" Then result = part & " " & result Else result = part End If End If i = i + 1 Loop ConvertNumberToVietnamese = result
End Function ' Hàm chuyển 3 chữ số thành chữ
Private Function ConvertThreeDigits(ByVal Number As Long) As String Dim Units() As String Units = Array("không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") Dim hundred As Long, ten As Long, unit As Long Dim result As String hundred = Number \ 100 ten = (Number Mod 100) \ 10 unit = Number Mod 10 result = "" ' Trăm If hundred > 0 Then result = Units(hundred) & " trăm" End If ' Chữ số hàng chục If ten > 1 Then If result <> "" Then result = result & " " result = result & Units(ten) & " mươi" ElseIf ten = 1 Then If result <> "" Then result = result & " " result = result & "mười" End If ' Chữ số hàng đơn vị If unit > 0 Then If ten = 0 And hundred = 0 Then result = result & " " & Units(unit) Else Select Case unit Case 1 result = result & " mốt" Case 5 result = result & " lăm" Case Else result = result & " " & Units(unit) End Select End If Else ' Khi hàng đơn vị là 0, không ghi gì End If ConvertThreeDigits = result
End Function
- Lưu và đóng VBA
Lưu file Excel dưới dạng
.xlsm(Excel Macro-Enabled Workbook).Sử
- Trong ô Excel, nhập công thức:
=VND(A1) - Nếu bạn muốn không thêm “đồng”:
=VND(A1, FALSE) - Nếu muốn “đồng chẵn” cho số nguyên:
=VND(A1, TRUE, TRUE)
3.1.3. Tùy chỉnh
- Thêm biến “đồng chẵn”: Hàm đã hỗ trợ.
- Chỉnh sửa quy tắc “mốt” và “lăm”: Thay đổi trong
Select Case unit. - Thêm từ “không”: Đã có, nhưng có thể bỏ qua nếu không cần.
- Chèn “đồng”: Thêm trong hàm
VND.
3.1.4. Lưu ý
- Macro phải được bật: Khi mở workbook, Excel sẽ hỏi bật macro.
- Bảo mật: Đối với file chia sẻ, macro có thể gây rủi ro bảo mật.
- Độ dài số: Hàm giới hạn tới 15 chữ số (≈ 10^15). Nếu số lớn hơn, cần điều chỉnh.
3.2. Phương pháp 2: Công thức công thức
Nếu bạn không muốn sử dụng VBA hoặc làm việc trong môi trường không hỗ trợ macro, bạn có thể tạo một công thức phức tạp. Tuy nhiên, phương pháp này thường dài, khó bảo trì và ít linh hoạt.
3.2.1. Phương pháp “SPLIT + IF” (Excel 365)
- Tách số thành từng chữ số
- Dùng
MID,LEN,IFERRORđể lấy từng ký tự. - Xác định nhóm (
nghìn,triệu,tỷ). - Sử dụng
CHOOSEđể chuyển đổi từng chữ số thành từ. - Kết hợp bằng
TEXTJOIN.
Mặc dù có thể thực hiện, công thức này thường dài hơn 200 ký tự và khó đọc.
3.2.2. Phương pháp “Array formula” (Excel < 365)
- Sử dụng
INDEX,SMALL,ROWS,COLUMNS,OFFSET. - Mặc dù hiệu năng tốt hơn, nhưng vẫn phức tạp.
Khuyến nghị: Sử dụng VBA nếu có thể. Nếu không, có thể tìm kiếm add-in hoặc macro đã được phát hành từ cộng đồng.
4. Ví dụ thực tế

Có thể bạn quan tâm: Hàm Value Trong Excel: Cách Dùng, Ứng Dụng Và Những Lưu Ý Quan Trọng
4.1. Chuyển đổi số thành chữ đơn giản
| Số | Công thức | Kết quả |
|---|---|---|
| 123 | =VND(123) | một trăm hai mươi ba đồng |
| 5000 | =VND(5000) | năm nghìn đồng |
| 1000000 日本一本道 | =VND(1000000) | một triệu đồng |
| 130000000 | =VND(130000000) | một trăm ba mươi triệu đồng |
| 123456789 | =VND(123456789) | 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 đồng |
4.2. Chuyển đổi số có chữ “đồng chẵn”
| Số | Công thức | Kết quả |
|---|---|---|
| 5000 | =VND(5000, TRUE, TRUE) | năm nghìn đồng chẵn |
| 123456 | =VND(123456, TRUE, TRUE) | một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng chẵn |
4.3. Số âm
| Số | Công thức | Kết quả |
|---|---|---|
| -123 | =VND(-123) | Âm một trăm hai mươi ba đồng |
4.4. Số lớn hơn 10^15
| Số | Công thức | Kết quả |
|---|---|---|
| 987654321012345 | =VND(987654321012345) | chín trăm tám mươi bảy nghìn sáu trăm năm mươi bốn triệu ba trăm hai mươi mười nghìn một trăm hai mươi ba nghìn bốn trăm năm mươi lăm đồng |
Lưu ý: Khi số lớn, độ dài chuỗi có thể vượt quá giới hạn Excel (32767 ký tự).
5. Tối ưu hoá và mở rộng
5.1. Tối ưu hoá hiệu suất
- Sử dụng
Staticđể lưu lại mảngҿка:vba Static Units() As String If IsEmpty(Units) Then Units = Array("", "nghìn", "triệu", "tỷ", ...) End If - Tránh gọi
ConvertThreeDigitslặp lại: - Tối ưu bằng cách cài đặt
Cachecho từng giá trị 0-999.
5.2. Mở rộng tính năng
- Chỉnh sửa quy tắc “mốt” / “lăm”
- Thêm tham số
WithSpecialRules As Boolean = True. - Định dạng số thập phân
- Khi số có phần thập phân, chuyển thành “đồng” + “điểm” + “chữ thập phân”.
- Hỗ trợ tiền tệ khác
- Thêm tham số
صلحةđể chỉ định loại tiền tệ (USD, EUR). - Tạo hàm “VNDCurrency”
- Tự động thêm “đồng chẵn” nếu số nguyên.
5.3. Kiểm thử
- Kiểm thử đơn vị: Viết macro Unit Test, kiểm tra đầu vào 0, 1, 10, 11, 20, Def, 100, 1000, 1000000ologisch.
- Kiểm thử giới hạn: Kiểm tra số 0 và 10^15.
- Kiểm thử tính số nguyên: Kiểm tra
IsIntegerOnly.
6. Lưu ý khi triển khai trong môi trường doanh nghiệp
| Yếu tố | Lưu ý |
|---|---|
| Bảo mật macro | Tài liệu chia sẻ nên được bảo mật, macro có thể bị chặn. |
| Quy định pháp lý | Khi viết hợp đồng, cần tuân thủ quy định остальных. |
| Định dạng số | Tránh nhập số dưới dạng văn bản, hãy dùng Number để tránh lỗi. |
| Số tiền có dấu thập phân | Khi số có phần thập phân, nhiều doanh nghiệp vẫn viết “đồng” + “điểm” + chữ. |
| Thang đo | Đối với số lớn (trên tỷ), hãy kiểm tra độ chính xác. |
| Tải macro | Nếu chia sẻ file, hãy cung cấp hướng dẫn bật macro. |
| Sử dụng add-in | Có thể tìm add-in “VND Converter” miễn phí hoặc trả phí. |
| Phân công | Đặt người chịu trách nhiệm kiểm tra nội dung. |
7. Tham khảo tài liệu và nguồn mở
- GitHub: Tìm các repository “vnd-words-in-excel” hoặc “excel-number-to-words-vn”.
- Stack Overflow: Câu hỏi “Excel number to Vietnamese words”.
- Microsoft Office VBA Reference: Hướng dẫn cấu trúc hàm, cách lưu trữ mảng, tối ưu.
- Bài viết blog: “Chuyển số thành chữ trong Excel – VBA”.
8. Kết luận
Việc chuyển đổi số thành chữ trong Excel là một nhu cầu thiết thực trong nhiều lĩnh vực, đặc biệt là trong kế toán và tài chính. Bằng cách tự viết hàm VBA tùy chỉnh, chúng ta có thể dễ dàng thực hiện chuyển đổi, đồng thời linh hoạt mở rộng tính năng, tối ưu hiệu suất và tuân thủ quy tắc ngôn ngữ.
Mặc dù có thể thực hiện bằng công thức phức tạp, nhưng phương pháp VBA cung cấp sự đ მდებ và tính mở rộng tốt hơn.
Những bước thực hiện đã được trình bày chi tiết, từ cách cài đặt, viết mã, tùy chỉnh, kiểm thửchildren, đến triển khai trong môi trường doanh nghiệp. Hy vọng bài viết này giúp bạn có thể nhanh chóng triển khai hàm VND trong Excel và nâng cao tính chuyên nghiệp trong công việc.

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