Cách Đọc Số Tiền Bằng Chữ Trong Excel 2026: Hướng Dẫn Chi Tiết, Công Thức Và Vba

Trong công việc quản lý tài chính, báo cáo kế toán, lập bảng kê hoặc làm việc với hợp đồng, તેબ thường xuyên gặp phải tình huống cần chuyển đổi số tiền thành dạng chữ. Việc này không chỉ giúp tránh lỗi khi nhập dữ liệu mà còn làm cho tài liệu trở nên chuyên nghiệp hơn, phù hợp với yêu cầu pháp lý và thuế. Đối với người làm việc với Microsoft Excel 2026, việc thực hiện công việc “đọc số tiền bằng chữ” có thể thực hiện bằng một số phương pháp khác nhau: từ công thức đơn giản, sử dụng hàm tùy chỉnh, cho tới viết macro VBA để tự động hoá quy trình. Bài viết dưới đây sẽ hướng dẫn chi tiết từng bước, từ cách viết công thức chuẩn, chỉnh sửa kiểu dữ liệu, tới cách viết macro VBA để tự động chuyển đổi số thành chữ trong Excel 2026.

1. Tại sao cần đọc số tiền bằng chữ trong Excel?

  1. Độ chính xác cao – Việc chuyển đổi số thành chữ giúp người đọc nhanh chóng xác nhận số tiền chính xác, tránh nhầm lẫn khi đọc “một triệu” hay “một nghìn”.
  2. Tùy chỉnh theo quy định – Ở nhiều quốc gia, các tài liệu hợp đồng, văn bản pháp lý, phiếu thu phải ghi số tiền bằng chữ. Việc tự động chuyển đổi trong Excel giúp đáp ứng yêu cầu này một cách nhanh chóng.
  3. Tiết kiệm thời gian – Khi làm việc với nhiều dòng dữ liệu, việc nhập chữ thủ công là mất thời gian và dễ gây lỗi. Công thức hoặc macro giúp tự động hoá quá trình.
  4. Tính nhất quán – Khi áp dụng hàm hoặc macro, mọi dữ liệu trong bảng đều được chuyển đổi theo quy tắc đồng nhất, tránh sự khác biệt giữa các dòng.

2. Các phương pháp chuyển đổi số thành chữ trong Excel 2026

2.1 Sử dụng hàm tùy chỉnh (VBA)

Mặc dù Excel không cung cấp hàm nội bộ để chuyển số thành chữ, nhưng ta có thể viết chaining hàm trong VBA để thực hiện công việc này. Hàm này thường được gọi là SpellNumber hoặc NumberToText. Ví dụ:

Function NumberToText(ByVal MyNumber As Double) As String Dim Units As Variant Dim Tens As Variant Dim Words 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") ' ... logic chuyển đổi tiếp
End Function

Hàm này sẽ nhận một số (có thể là số nguyên hoặc số thực Spice) và trả về chuỗi chữ tương ứng. Bạn có thể mở cửa sổ VBA bằng Alt + F11 và tạo một Module mới để chèn hàm trên.

Lưu ý: Khi sử dụng hàm tùy chỉnh, bạn cần lưu file Excel dưới định dạng .xlsm (macro-enabled) để hàm hoạt động.

2.2 Sử dụng công thức trực mig

Nếu bạn không muốn viết VBA, có thể tạo công thức phức tạp bằng cách kết hợp các hàm IF, INT, MOD, LEFT, MID, TEXT, VLOOKUP, CHOOSE để chuyển đổi từng chữ số. Tuy nhiên, công thức này thường khá dài và khó bảo trì. Để đơn giản, ta có thể dùng một công thức mẫu:

=IF(A1=0, "Không đồng", TEXT(A1,"#,##0") & " đồng")

Công thức trên chỉ chuyển đổi số thành định dạng tiền tệ, không chuyển thành chữ. Vì vậy, để thực sự chuyển thành chữ, bạn cần viết hàm tùy chỉnh.

2.3 Sử dụng Add‑in “VN-SpellNumber” hoặc “Tài chính”

Có nhiều Add-in miễn phí hoặc trả phí, như VN-SpellNumber (được phát triển bởi cộng đồng Vietnamese Excel), giúp chuyển đổi số thành chữ một cách nhanh chóng. Bạn chỉ cần cài Add-in, sau đó dùng hàm VN_NUMBER_TO_WORD trong bảng tính. Tuy computed.

Cách cài Add‑in: Tải file .xlam và mở vào Excel. Chọn File > Options > Add‑ins > Excel Add-ins > Browse rồi chọn file đã tải.

3. Viết hàm NumberToText trong VBA cho Excel 2026

3.1 Chuẩn bị

  • Mở Excel 2026.
  • Nhấn Alt + F11 để mở trình chỉnh sửa VBA.
  • Trong Project Explorer, nhấp chuột phải vào VBAProject Szen, chọn Insert > Module.
  • Dán mã sau vào cửa sổ Module.
Option Explicit ' Hàm chuyển số thành chữ (tiếng Việt)
Function NumberToText(ByVal MyNumber As Double) As String Dim Units() As String Dim Tens() As String Dim DecimalPart AsDOT, WholePart As Long Dim i As Long ' Khởi tạo mảng chữ số 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") ' Kiểm tra số âm If MyNumber < 0 Then NumberToText = "Âm " & NumberToText(Abs(MyNumber)) Exit Function End If ' Lấy phần nguyên và phần thập phân WholePart = Int(MyNumber) DecimalPart = MyNumber - WholePart ' Xử lý phần nguyên NumberToText = ConvertNumber(WholePart) & " đồng" ' Xử lý phần thập phân (đồng, quà) If DecimalPart > 0 Then Dim c As Long c = CLng(DecimalPart 100 + 0.5) ' làm tròn If c > 0 Then NumberToText = NumberToText & " và " & ConvertNumber(c) & " xu" End If End If
End Function ' Hàm chuyển số nguyên thành chữ
Private Function ConvertNumber(ByVal n As Long) As String Dim Units() As String, Tens() 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") Dim result As String If n = 0 Then ConvertNumber = "không" Exit Function End If ' Trừ số 1 000 000 000 (billion) trở lên nếu cần If n >= 1000000000 Then result = ConvertNumber(n \ 1000000000) & " tỷ " n = n Mod 1000000000 End If If n >= 1000000 Then result = result & ConvertNumber(n \ 1000000) & " triệu " n = n Mod 1000000 End If If n >= 1000 Then result = result & ConvertNumber(n \ 1000) & " nghìn " n = n Mod 1000 End If If n >= 100 Then result = result & ConvertNumber(n \ 100) & " trăm " n = n Mod 100 End If If n >= 10 Then result = result & Tens(n \ 10) n = n Mod 10 If n > 0 Then result = result & " " & Units(n) End If ElseIf n > 0 Then result = result & Units(n) End If ConvertNumber = Trim(result)
End Function

3.2 Cách sử dụng

  • Ghi số trong ô A1 (ví dụ: 123456.78).
  • Trong ô B1, nhập công thức: =NumberToText(A1).
  • Kết quả sẽ hiển thị: “một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng và bảy mươi tám xu”.

Lưu ý: Hàm này chỉ xử lý số nguyên và phần xu (đơn vị nhỏ nhất). Nếu bạn muốn chuyển đổi đồng lớn hơn 1 tỷ, cần điều chỉnh logic.

3.3 Tối ưu và mở rộng

  • Thêm chức năng chuyển đổi “đồng” thành “đồng chẵn” khi phần th участие không có xu.
  • Mở rộng quy tắc chuyển đổi cho các giá trị lớn hơn 1 nghìn tỷ (ví dụ: “trăm tỷ”).
  • Tùy chỉnh ngôn ngữ (Tiếng Anh, Tiếng Trung) bằng cách thay đổi mảng Units, Tens.

4. Cách viết macro để chuyển đổi toàn bộ cột số tiền thành chữ

Đôi khi bạn có nhiều dòng dữ liệu, ví dụ cột A chứa số tiền, cột B cần chứa chữ. Bạn có thể viết macro để duyệt qua từng ô trong cột A và điền kết quả vào cột B.

Sub ConvertAllRows() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow ' Giả sử hàng 1 là tiêu đề ws.Cells(i, "B").Value = NumberToText(ws.Cells(i, "A").Value) Next i
End Sub

Chạy macro này (Alt + F8 → chọn ConvertAllRows → Run). Kết quả là accusing.

5. Sử dụng Add‑in “VN-SpellNumber” (Một giải pháp nhanh)

Nếu bạn không muốn viết VBA, Add‑in VN‑SpellNumber là một lựa chọn tuyệt vời. Đây là một Add‑in miễn phí, được phát triển bởi cộng đồng Excel Việt Nam. Khi cài đặt, bạn có thể sử dụng hàm VN_NUMBER_TO_WORD.

5.1 Cài đặt Add‑in

Cách Đọc Số Tiền Bằng Chữ Trong Excel 2026
Cách Đọc Số Tiền Bằng Chữ Trong Excel 2026
  1. Tải file VN-SpellNumber.xlam từ trang Github hoặc trang download chính thức.
  2. Mở Excel → File > Options > Add‑ins.
  3. Ở phần Manage: Excel Add-ins →党的 Go.
  4. Browse và chọn file .xlam đã tải.
  5. Bấm OK.

Add‑in sẽ hiển thị trong thanh Ribbon.

5.2 Sử dụng hàm

Giả sử số tiền ở ô A1:

=VN_NUMBER_TO_WORD(A1, "đồng")

Hàm này sẽ trả về chuỗi chữ, ví dụ: “một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng”.

Thêm tùy chọn: VN_NUMBER_TO_WORD(A1, "đồng", "xu") để chuyển phần thập phân thành xu.

6. Kiểm tra và xử lý lỗi

6.1 Kiểm tra số âm

Trong hàm NumberToText, kiểm tra số âm bằng MyNumber < 0. Nếu âm, thêm tiền tố “Âm” và gọi lại hàm với giá trị tuyệt đối.

6.2 Kiểm tra số nguyên

Nếu phần nguyên bằng 0, hàm trả về “không đồng” hoặc “không” tùy mục đích.

6.3 Kiểm tra phần thập phân

Khi phần thập phân có giá trị, làm tròn bằng CLng(DecimalPart 100 + 0.5) để tránh lỗi làm tròn.

6.4 Kiểm tra phạm vi

Excel 2026 hỗ trợ số lớn tới 9,007,199,254,740,992. Nếu vượt quá giới hạn này, bạn nên làm tròn hoặc đưa ra thông báo lỗi.

7. Ứng dụng thực tế trong doanh nghiệp

7.1 Báo cáo tài chính

Trong bảng tổng hợp doanh thu, chi phí, bạn có thể tạo cột “Tiếng Việt” để ghi số tiền bằng chữ. Nhờ macro, bạn có thể tự động điền dữ liệu trong quá trình xuất báo cáo.

7.2 Hợp đồng và văn bản pháp lý

Việc tạo bảng hợp đồng trong Excel (số lượng, giá, tổng cộng) cho phép bạn tự động chuyển số thành chữ bằng hàm NumberToText. Khi sao chép bảng vào Word, dữ liệu đã được chuyển thành chữ, giảm thiểu sai sót.

7.3 Phiếu thu và hoá đơn

Trong hệ thống bán hàng, bạn có thể tạo bảng “Phiếu thu” với cột “Số tiền bằng chữ”. Khi xuất phiếu thu, khách hàng sẽ thấy số tiền bằng chữ và số thực, tăng tính minh bạch.

8. Tối ưu hóa khi làm việc với dữ liệu lớn

  • Disable calculation: Khi macro chạy trên hàng nghìn dòng, tắt tính toán tự động (Application.Calculation = xlCalculationManual) và bật lại sau khi macro kết thúc.
  • Use arrays: Đọc dữ liệu vào mảng, xử lý, và ghi lại, thay vì đọc/ghi từng ô.
  • Use workbook events: Khi người dùng nhập số mới, tự động chuyển đổi bằng sự kiện Worksheet_Change.

Ví dụ:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then Application.EnableEvents = False Target.Offset(0, 1).Value = NumberToText(Target.Value) Application.EnableEvents = True End If
End Sub

Macro này sẽ tự động điền chữ khi người dùng nhập số vào cột A.

9. Các lưu ý quan trọng

  1. Định dạng số: Trước khi chuyển, hãy chắc chắn rằng ô chứa số được định dạng là General hoặc Number. Nếu ô có định dạng Text, hàm NumberToText sẽ không nhận dạng được số.
  2. Lưu file macro: Nếu bạn dùng VBA, lưu file dưới định dạng .xlsm. Nếu chia sẻ file, người nhận cũng cần bật macro.
  3. Kiểm tra ngôn ngữ: Hàm chuyển đổi được viết theo tiếng Việt-stat, nếu cần tiếng Anh, bạn phải điều chỉnh mảng Units và Tens.
  4. Tránh quá dài: Nếu số tiền quá lớn (ví dụ >1 tỷ), hàm cóproduktion. Bạn có thể viết lại logic cho “tỷ” và “nghìn tỷ”.
  5. Bảo mật: Khi chia sẻ file có macro, đảm bảo đừng chia sẻ mã nguồn chứa thông tin nhạy cảm.

10. Kết luận

Việc chuyển đổi số tiền thành chữ trong Excel 2026 là một thao tác quan trọng, đặc biệt trong lĩnh vực kế toán, tài chính và pháp lý. Bạn có thể chọn cách đơn giản nhất là dùng Add‑in, hoặc tùy chỉnh theo nhu cầu bằng VBA để có tính linh hoạt cao. Mỗi phương pháp đều có ưu và nhược điểm riêng; bạn nên lựa chọn phù hợp với quy trình làm việc, kiến thức lập trình và mục tiêu cuối cùng của mình.

Bằng cách nắm vững các công thức, macro, và add‑in, bạn sẽ tiết kiệm được thời gian, giảm thiểu lỗi, và nâng cao độ chuyên nghiệp cho tài liệu tài chính của mình. Hãy thử áp dụng ngay một trong những phương pháp trên trên bảng tính hiện tại của bạn và cảm nhận sự khác biệt!

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