Lệnh Đọc Số Tiền Thành Chữ Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Tới Nâng Cao

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!

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:

  1. Độ 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.
  2. 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ữ.
  3. 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.
  4. 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.

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:

  1. Chia số؛: Tách phần nguyên và phần thập phân.
  2. Sử dụng hàm TEXT: Định dạng số thành chuỗi.
  3. Thay đổi các ký tự: Thay thế “.” thành “đồng” hoặc “điểm”.
  4. Nối chuỗi: Sử dụng CONCATENATE hoặ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.

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

  1. Mở Excel.
  2. Nhấn Alt + F11 để mở Visual Basic for Applications.
  3. 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àm ReadNumber để 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, hundreds chứ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

  1. Cột A: Số hàng hóa (số lượng).
  2. Cột B: Giá bán (đơn vị tiền tệ).
  3. Cột C: Thành tiền = A2B2.
  4. 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 ReadMoney sẽ 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 currencyUnit và 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ữ

Lệnh Đọc Số Tiền Thành Chữ Trong Excel
Lệnh Đọc Số Tiền Thành Chữ Trong Excel
  • 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 LET giú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 ReadMoney trong 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

  1. 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ữ.
  2. 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 ReadMoney trong 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:

  1. Tại sao đọc số tiền thành chữ là quan trọng.
  2. Cách thực hiện chuyển đổi bằng công thức Excel đơn giản.
  3. Viết hàm UDF trong VBA để đọc số tiền thành chữ.
  4. Tích hợp hàm vào bảng tính thực tế, bao gồm hoá đơn, báo cáo.
  5. Xử lý các trường hợp đặc biệt và tối ưu hiệu suất.
  6. Chuyển đổi nhiều ngôn ngữ và hỗ trợ tính linh hoạt.
  7. Tự động hoá quy trình lập báo cáo, macro và Power Query.
  8. 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!

⚠️
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