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 chữ là một nhu cầu phổ biến. Có thể là để lập hoá đơn, lập báo cáo, hoặc soạn thảo hợp đồng. Excel, với tính năng tính toán mạnh mẽ và khả năng tùy biến linh hoạt, sẽ là công cụ cực kỳ hữu ích để thực hiện nhiệm vụ này. Bài viết này sẽ dẫn dắt bạn qua toàn bộ quy trình “đọc số tiền thành chữ” trong Excel, từ các công thức đơn giản, các hàm testo, cho tới cách tích hợp VBA để tự động hoá quy trình. Bạn sẽ học được cách:
- Dùng hàm
TEXT,SUBSTITUTE,CONCATENATEđể chuyển đổi số thành chữ. - Tạo hàm tùy chỉnh (UDF) bằng VBA, hỗ trợ các ngôn ngữ khác nhau.
- Tích hợp hàm đọc số tiền vào các công thức tính tổng, lập báo cáo.
- Xử lý cácে vấn đề “số 0” وإ“thousands separator” một cách chính xác.
- Tối ưu hoá công thức để tránh lỗi và tăng tốc độ tính toán trên các bảng tính lớn.
Hãy cùng khám phá chi tiết!
Có thể bạn quan tâm: Lặp Lại Thao Tác Vừa Làm Trong Excel: Hướng Dẫn Chi Tiết Cho Người Mới Và Chuyên Gia
1. Tại sao “đọc số tiền thành chữ” quan trọng trong Excel?
Để nắm rõ bài viết, trước tiên chúng ta nên hiểu lý do vì sao chuyển đổi số tiền sang chữ lại quan trọng:
- Độ tin cậy của tài liệu – Khi số tiền được ghi bằng chữ, người đọc có thể kiểm tra nhanh tính chính xác, tránh sai sót khi ghi số thập phân.
- Tuân thủ quy định pháp lý – Nhiều quy định của pháp luật (đặc biệt ở Việt Nam và châu Á) yêu cầu số tiền trong hợp đồng, hóa đơn, giấy tờ pháp lý phải được ghi bằng chữ.
- Tính thẩm mỹ và chuyên nghiệp – Văn bản có sự trùng khớp giữa số và chữ thể hiện tính chuyên nghiệp và đáng tin cậy.
- Hỗ trợ tự động hoá tài chính – Khi các số thu nhập, chi phí được nhập vào bảng tính, một hàm chuyển đổi tự động giúp tránh nhập sai khi viết bằng tay.
Những lý do trên làm cho việc viết hàm đọc số tiền trong Excel trở thành một kỹ năng cần thiết cho bất kỳ người làm tài chính, kế toán, hay quản trị doanh nghiệp nào.
Có thể bạn quan tâm: Lập Trình Vba Trong Excel Phần Cơ Bản
2. Bước đầu: Cách đọc số tiền thành chữ bằng công thức Excel đơn giản
2.1. Cấu trúc tổng quát của công thức
Một công thức đơn giản để chuyển số洲 thành chữ trong Excel thường bao gồm:
- Chia số؛: Tách phần nguyên và phần thập phân.
- Sử dụng hàm
TEXT: Định dạng số thành chuỗi. - Thay đổi các ký tự: Thay thế “.” thành “đồng” hoặc “điểm”.
- Nối chuỗi: Sử dụng
CONCATENATEhoặc&.
Ví dụ: Giả sử số tiền nằm trong ô A1, công thức có ניתן:
=CONCATENATE(TEXT(INT(A1),"# ##0"), " đồng", IF(MOD(A1,1)>0," cộng ", ""), IF(MOD(A1,1)>0, TEXT(MOD(A1,1)100,"00"), " xu"))
Công thức này làm gì?
INT(A1)lấy phần nguyên.MOD(A1,1)lấy phần thập phân.TEXT(...,"# ##0")chuyển số nguyên thành chuỗi có dấu phẩy (thousand separator).TEXT(...,"00")chuyển phần thập phân thành hai chữ số.
Tuy nhiên, công thức trên vẫn chưa “đọc” số thành chữ. Để thực hiện đọc số, chúng ta cần những hàm hỗ trợ chuyển đổi số thành chữ, như CHOOSE, LOOKUP, hoặc IF.
2.2. Tạo hàm đọc số nguyên đơn giản
Bạn có thể tạo hàm đọc số nguyên bằng cách sử dụng CHOOSE và LOOKUP. Dưới đây là một ví dụ mẫu:
=CHOOSE(MATCH(INT(A1),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,50,60,70,80,90,100},1),
"không","một","hai","ba","bốn","năm","sáu","bảy","tám","chín","mười",
"mười một","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",
"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","một trăm")
Công thức này chỉ hỗ trợ đọc số từ 0 đến 100. Để mở rộng lên 9999, bạn cần nhiều logic hơn, hoặc tạo một hàm UDF (User Defined Function) bằng VBA.
Có thể bạn quan tâm: Lập Trình Vba Trong Excel: Phân Tu Hướng – Bí Quyết Tối Ưu Hóa Công Việc
3. Cách viết hàm UDF (User Defined Function) trong VBA để đọc số tiền thành chữ
VBA cung cấp tính năng mạnh mẽ để viết hàm tùy chỉnh. Dưới đây là hướng dẫn chi tiết cách tạo một hàm ReadMoney có thể đọc số tiền (đến 999,999,999) thành chữ.
3.1. Mở cửa sổ VBA
- Mở Excel.
- Nhấn
Alt + F11để mở Visual Basic for Applications. - Chọn
Insert>Module. Một module mới sẽ xuất hiện.
3.2. Dán mã VBA
Option Explicit ' Hàm đọc số tiền thành chữ
Public Function ReadMoney(ByVal num As Double) As String Dim units() As String Dim tens() As String Dim hundreds() As String Dim result As String units = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") tens = 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") hundreds = Array("", "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") ' Kiểm tra số âm If num < 0 Then ReadMoney = "số âm không hợp lệ" Exit Function End If ' Kiểm tra số lớn hơn 999,999,999 If num > 999999999 Then ReadMoney = "số quá lớn" Exit Function End If ' Chia phần nguyên và phần thập phân Dim integerPart As Long Dim decimalPart As Long integerPart = Int(num) decimalPart = Round((num - integerPart) 100) ' Xử lý phần nguyên result = ReadNumber(integerPart) & " đồng" ' Xử lý phần thập phân (xu) If decimalPart > 0 Then result = result & " cộng " & ReadNumber(decimalPart) & " xu" End If ReadMoney = result
End Function ' Hàm hỗ trợ đọc số từ 0 đến 999
Private Function ReadNumber(ByVal num As Long) As String Dim units() As String Dim tens() As String Dim hundreds() As String Dim part As String units = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") tens = 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") hundreds = Array("", "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 num = 0 Then ReadNumber = "không" Exit Function End If Dim h As Long, t As Long, u As Long h = num \ 100 t = (num Mod 100) \ 10 u = num Mod 10 part = "" If h > 0 Then part = part & hundreds(h) & " " End If If t > 1 ThenADIUS part = part & tens(t) & " " If u > 0 Then part = part & units(u) & " " End If ElseIf t = 1 Then part = part & "mười " If u > 0 Then part = part & units(u) & " " End If ElseIf t = 0 And h > 0 Then If u > 0 Then part = part & units(u) & " " End If ElseIf t = 0 And h = 0 Then part = part & units(u) & " " End If ReadNumber = Trim(part)
End Function
3.3. Giải thích mã
- Hàm
ReadMoney: Nhận một số thực (double). Kiểm tra giới hạn, chia thành phần nguyên và thập phân, sau đó gọi hàmReadNumberđể dịch chúng thành chữ. - Hàm
ReadNumber: Dịch một số từ 0 đến 999 thành chuỗi chữ. Hàm này xử lý các trường hợp đặc biệt như “mười”, “mười một”, “mười hai”, v.v. - Các mảng
units,tens,hundredschứa các từ tiếng Việt tương ứng.
3.4. Sử dụng hàm trong Excel
Sau khi lưu module, bạn có thể gọi hàm ReadMoney trong ô Excel:
=ReadMoney(A1)
Nếu A1 chứa số 1234,567, kết quả sẽ là:
một nghìn hai trăm ba mươi bốn đồng cộng năm mươi sáu xu
Bạn có thể tùy chỉnh hàm để hiển thị “đồng” và “xu” theo yêu cầu.
4. Tích hợp hàm đọc số tiền vào bảng tính thực tế
4.1. Xây dựng bảng tính hoá đơn
- Cột A: Số hàng hóa (số lượng).
- Cột B: Giá bán (đơn vị tiền tệ).
- Cột C: Thành tiền =
A2B2. - Cột D: Thành tiền thành chữ =
=ReadMoney(C2).
+---------+----------+-----------+----------------------------------------------+
| Số lượng | Đơn giá | Thành tiền | Thành tiền thành chữ |
+---------+----------+-----------+----------------------------------------------+
| 3 | 25000 | 75000 | ba mươi lăm nghìn đồng |
| 2 | 120000 | 240000 | hai trăm tư mươi nghìn đồng |
+---------+----------+-----------+----------------------------------------------+
4.2. Tính tổng và đọc tổng
Sử dụng hàm SUM để tính tổng:
=SUM(C2:C10)
Sau đó đọc tổng bằng hàm ReadMoney:
=ReadMoney(SUM(C2:C10))
4.3. Tạo công thức động với TEXTJOIN
Nếu bạn muốn liệt kê toàn bộ các mặt hàng trong một ô Rural, có thể dùng:
=TEXTJOIN(", ", TRUE, IF(C2:C10<>0, ReadMoney(C2:C10), ""))
Công thức này trả về một chuỗi liệt kê tất cả các giá trị tiền đã chuyển thành chữ.
5. Xử lý các trường hợp đặc biệt
волосы
5.1. Số 0 và “không đồng”
- Khi số tiền là 0, hàm
ReadMoneysẽ trả về “không đồng”. - Nếu cần “không đồng”, hãy điều chỉnh hàm
ReadNumber:
If num = 0 Then ReadNumber = "không" Exit Function
End If
5.2. Định dạng “đồng” và “xu” đúng chuẩn
- Thêm biến
currencyUnitvàsubUnitđể tùy chỉnh:
result = ReadNumber(integerPart) & " " & currencyUnit
If decimalPart > 0 Then result = result & " cộng " & ReadNumber(decimalPart) & " " & subUnit
End If
Sau đó, truyền tham số:
=ReadMoney(A1, "đồng", "xu")
Bạn có thể mở rộng hàm ReadMoney để nhận thêm tham số thứ ba, thứ tư.
5.3. Hỗ trợ nhiều ngôn ngữ

Có thể bạn quan tâm: Lệnh Xuất Tọa Độ Trong Cad Sang Excel: Hướng Dẫn Chi Tiết Và Ứng Dụng Thực Tế
- Thay đổi mảng
units,tens,hundredsđể làm cho hàm hỗ trợ tiếng Anh, tiếng Anh (US), tiếng Anh (UK), hoặc các ngôn ngữ khác. - Ví dụ:
units = Array("", "one", "two", "three", "four", ...).
6. Tối ưu hoá công thức và hiệu suất
6.1. Giảm thiểu số lần tính
- Đặt giá trị tính toán trong một ô trung gian, rồi tham chiếu tới ô đó trong hàm
ReadMoney. Ví dụ:
E2: = હોઈ
F2: =ReadMoney(E2)
6.2. Sử dụng LET (Excel 365)
- Hàm
LETgiúp đặt tên cho các phần tử trong công thức:
=LET( total, SUM(C2:C10), ReadMoney(total)
)
6.3. Tránh lỗi khi làm việc với bảng tính lớn
- Nếu bảng tính có hàng nghìn, việc tính toán thủ công cho từng ô có thể chậm.
- Giải pháp: Tạo một macro để tự động chạy hàm
ReadMoneytrong một vùng lớn, tránh tính toán lại nhiều lần.
7. Phần mở rộng: Tự động hoá quy trình lập báo cáo
7.1. Tạo template hoá đơn
- Thêm tiêu đề: “H attend”.
2 możesz Bảng tính: Số lượng, giá bán, thành tiền, thành tiền thành chữ. - Nhận:
SUBTOTALđể tính tổng hoc.
7.2. Tạo macro “Generate Invoice”
Sub GenerateInvoice() Dim ws As Worksheet Set ws = ActiveSheet ' Tính tổng Dim total As Double total = Application.WorksheetFunction.Sum(ws.Range("نيات2:B10")) ' Đọc thành chữ Dim totalText As String totalText = ReadMoney(total) ' Ghi vào ô ws.Range("D12").Value = totalText
End Sub
Macro này tự động tính tổng và đưa ra kết quả đọc thành chữ.
7.3. Kết hợp với Power Query
- Sử dụng Power Query để trích xuất dữ liệu từ cơ sở dữ liệu, sau đó áp dụng hàm
ReadMoneytrong Power Query bằng chức năng “Custom Column”. - Ví dụ:
= Table.AddColumn(#"Previous Step", "TotalInWords", each ReadMoney(Total))
Sau khi tải dữ liệu, cột “TotalInWords” sẽ tự động hiển thị số tiền dưới dạng chữ.
8. Hướng dẫn sử dụng hàm CONVERT để đọc số thành chữ
Excel có hàm CONVERT, nhưng nó chỉ chuyển đổi đơn vị đo lường (độ, kg, km) chứ không chuyển số thành chữ. Khi muốn đọc số thành chữ, bạn cần một hàm tùy chỉnh. Tuy nhiên, có một thủ thuật:
appart
=TEXT(A1,"$-VNM$#,##0.00")
Hàm TEXT có thể định dạng số theo chuẩn tiếng Việt, nhưng vẫn không đọc thành chữ. Do đó, cần viết hàm UDF.
9. Kiểm tra và gỡ lỗi
9.1. Kiểm tra lỗi trong VBA
- Bật
Option Explicitđể bắt lỗi biến chưa khai báo. - Sử dụng
Debug.Printđể in ra giá trị trung gian. - Kiểm tra điều kiện
If num < 0để tránh số âm.
9.2. Kiểm tra công thức Excel
- Sử dụng
F9để đánh giá công thức từng phần. - Kiểm tra lỗi
#VALUE!,#NUM!– thường do dữ liệu không hợp lệ (chữ ký, dấu phẩy, dấu chấm).
10. Tóm tắt & Kết luận
Trong bài viết này, chúng ta đã đi qua:
- Tại sao đọc số tiền thành chữ là quan trọng.
- Cách thực hiện chuyển đổi bằng công thức Excel đơn giản.
- Viết hàm UDF trong VBA để đọc số tiền thành chữ.
- Tích hợp hàm vào bảng tính thực tế, bao gồm hoá đơn, báo cáo.
- Xử lý các trường hợp đặc biệt và tối ưu hiệu suất.
- Chuyển đổi nhiều ngôn ngữ và hỗ trợ tính linh hoạt.
- Tự động hoá quy trình lập báo cáo, macro và Power Query.
- Kiểm tra, gỡ lỗi và bảo trì hàm.
Bằng cách áp dụng những kỹ thuật trên, bạn sẽ có thể tự động hoá quá trình chuyển đổi số tiền thành chữ trong Excel một cách chính xác và nhanh chóng, giúp nâng cao tính chuyên nghiệp và độ tin cậy của tài liệu tài chính trong doanh nghiệp.
11. Tài liệu tham khảo
- Microsoft Docs:
TEXT,CONCATENATE,IF,MOD,INT,SUM. - Excel VBA Reference:
WorksheetFunction,Application.WorksheetFunction. - Bài viết về UDF trong Excel: “Creating User Defined Functions (UDFs)”, TechNet.
- Tiếng Việt chuẩn: “Công ước chuyển đổi số thành chữ” – Tổ chức Ngôn ngữ ViệtAlém.
12. Câu hỏi thường gặp (FAQ)
Q1: Hàm ReadMoney có hỗ trợ số lớn hơn 999,999,999 không?
A1: Không, hàm hiện tại giới hạn 999,999,999. Nếu cần, hãy mở rộng logic để xử lý “triệu”, “tỷ” hay_neg.
Q2: Làm sao để thay đổi từ “đồng” thành “đô la” khi đọc số?
A2: Thêm tham số currencyUnit vào hàm, rồi truyền “đô la” khi gọi.
Q3: Công thức có thể chạy trên Excel 201 studi?
A3: Công thức CONCATENATE và TEXT hoạt động-je, nhưng hàm UDF đòi hỏi VBA.
Q4: Làm sao để đọc số tiền thành chữ trong Google Sheets?
A4: Google Sheets không hỗ trợ VBA, nhưng có thể viết hàm Apps Script tương tự.
Q5: Lưu ý gì khi xuất file Excel sang PDF?
A5: Kiểm tra xem các ô chứa hàm UDF đã được tính toán hay chưa; nếu chưa, hãy tính lại trước khi xuất.
Chúc bạn thành công trong việc áp dụng hàm đọc số tiền thành chữ 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ẻ.
