Trong môi trường làm việc doanh nghiệp, báo cáo tài chính, hợp đồng قوانn, hay bất kỳ tài liệu nào cần thể hiện số tiền một cách rõ ràng, việc chuyển đổi số thành chữ là một thao tác quan trọng. Excel 2026, với tính năng mạnh mẽ và tính linh hoạt của VBA, cho phép người dùng thực hiện công việc này một cách nhanh chóng và chính xác. Bài viết dưới đây sẽ hướng dẫn chi tiết từng bước, từ cách sử dụng hàm sẵn có, viết macro, cho tới mẹo tối ưu hoá hiệu suất khi làm việc với dữ liệu lớn.
Có thể bạn quan tâm: Phần Mềm Quản Lý Vật Tư Bằng Excel
1. Tại sao cần chuyển số thành chữ trong Excel
- Độ chính xác: Việc viết số bằng chữ giúp tránh sai sót khi đọc số, đặc biệt trong các giao dịch tài chính.
- Định dạng tài liệu: Hóa đơn, hợp đồng, phiếu chi thường yêu cầu ghi số bằng chữ.
- Tự động hoá: Khi dữ liệu thay đổi, công thức tự động cập nhật số thành chữ mà không cần thao tác thủ công.
Có thể bạn quan tâm: Phần Mềm Quản Lý Hợp Đồng Bằng Excel: Giải Pháp Tối Ưu Cho Doanh Nghiệp Hiện Đại
2. Cách chuyển số thành chữ trong Excel 2026 – Phương pháp 1: Hàm VBA đơn giản
Excel không có hàm sẵn có để chuyển số thành chữ (đến khi Excel 2026 trở đi, có hàm TEXT hỗ trợ định dạng dạng chữ). Tuy nhiên, trong Excel 2026, chúng ta có thể viết một hàm VBA tùy chỉnh. Dưới đây là một ví dụ cơ bản:
Function SoThanhChu(ByVal n As Double) As String Dim d As Long, s As String d = Int(n) If d = 0 Then SoThanhChu = "Không đồng" : Exit Function s = "" Dim m As Long, t As String m = d Dim i As Long Dim arr As Variant arr = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") ' Thập phân Dim dec As Long dec = d Mod 10 t = arr(dec) If t <> "" Then s = t & " đồng" ' Chia 1000, 1,000,000, ... i = 3 While m > 0 Dim part As Long part = m Mod 1000 If part > 0 Then Dim partText As String partText = PartToWords(part) ' Hàm xử lý phần 3 chữ số s = partText & " " & Thousands(i) & " " & s End If m = m \ 1000 i = i + 3 Wend SoThanhChu = Trim(s)
End Function Function PartToWords(ByVal num As Long) As String Dim words As String words = "" Dim thousand As Long, hundred As Long, ten As Long, unit As Long thousand = num \ 100 hundred = (num Mod 100) \ 10 unit = num Mod 10 Dim arr As Variant arr = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") If thousand > 0 Then words = arr(thousand) & " trăm" End If If hundred > 0 Then words = words & " " & arr(hundred) & " mươi" ElseIf thousand > 0 And unit <> 0 Then words = words & " lẻ" End If If unit > 0 Then words = words & " " & arr(unit) End If PartToWords = Trim(words)
End Function Function Thousands(ByVal pos As Long) As String Dim arr As Variant arr = Array("", "nghìn", "triệu", "tỷ") Thousands = arr(pos \ 3)
End Function
Cách sử dụng
1. Mở VBA Editor (Alt + F11).
2. Chèn một Module mới (Insert > Module).
3. Dán đoạn mã trên vào cửa sổ Module.
4. Trở lại Excel, nhập công thức: =SoThanhChu(A1) (trong đó A1 là ô chứa số).
Lưu ý: Hàm trên chỉ hỗ trợ số nguyên. Nếu cần xử lý phần thập phân, bạn có thể mở rộng logic.
Có thể bạn quan tâm: Phần Mềm Quản Lý Thiết Bị Trường Học Bằng Excel – Giải Pháp Tối Ưu Cho Các Cơ Sở Giáo Dục
3. Cách chuyển số thành chữ trong Excel 2026 – Phương pháp 2: Sử dụng hàm TEXT kết hợp với CONVERT
Mặc dù Excel 2026 không hỗ trợ hàm CONVERT cho chuyển số thành chữ, nhưng bạn có thể kết hợp các hàm khác để đạt được mục tiêu:
- Sử dụng hàm
TEXTđể định dạng số thành dạng chữ (nếu có add-in). - Dùng Add-in như
Number to Wordcủa Microsoft hoặc các add-in miễn phí.
Ví dụ: Cài đặt add-in “Number to Words” (có sẵn trên trang web của Microsoft), sau đó nhập công thức:
=NUMTOWORD(A1)
Add-in này đồng bộ với Excel 2026 và hỗ trợ nhiều ngôn ngữ.
4. Tối ưu hoá hiệu suất khi вирус

Có thể bạn quan tâm: Phần Mềm Sắp Xếp Abc Trong Excel 2026: Cách Thực Hiện, Mẹo Và Công Cụ Tối Ưu
Khi làm việc với hàng nghìn dòng dữ liệu, hàm VBA tùy chỉnh có thể làm chậm. Dưới đây là một số mẹo:
- Disable ScreenUpdating: Trong module, thêm
Application.ScreenUpdating = Falsetrước khi chạy lô, vàTruesau khi hoàn thành. - Cache kết quả: Nếu một số xuất hiện nhiều lần, lưu trữ kết quả trong một dictionary.
- Giảm số lần gọi hàm: Sử dụng hàm
SoThanhChumột lần duy nhất và copy kết quả sang ô khác.
Sub ConvertLargeRange() Dim rng As Range, cell As Range Set rng = Range("A2:A10000") Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim cache As Object Set cache = CreateObject("Scripting.Dictionary") For Each cell In rng If Not cache.Exists(cell.Value) Then cache(cell.Value) = SoThanhChu(cell.Value) End If cell.Offset(0, 1).Value = cache(cell.Value) Next cell Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
End Sub
5. Khắc phục lỗi thường gặp
| Lỗi | Nguyên nhân | Giải pháp |
|---|---|---|
| Hàm trả về chuỗi rỗng.alpha | Số bằng 0 | Thêm kiểm tra If d = 0 Then SoThanhChu = "Không đồng" : Exit Function |
| Độ dài chuỗi quá dài | Dữ liệu lớn | Kiểm tra cột chứa số, chia nhỏ dữ liệu, dùng hàm TEXT thay vì VBA |
| Thay đổi ngôn ngữ | Không hỗ trợ tiếng Việt | Sử dụng add-in inven, hoặc viết hàm xử lý tiếng Việt |
6. Mẹo nâng cao: Tùy biến ngôn ngữ
Nếu bạn làm việc với nhiều quốc gia, bạn có thể mở rộng hàm SoThanhChu để hỗ trợ nhiều ngôn ngữ:
Function SoThanhChu(ByVal n As Double, Optional ByVal lang As String = "vi") As String Select Case lang Case "vi" SoThanhChu = SoThanhChuVi(n) Case "en" SoThanhChu = SoThanhChuEn(n) Case Else SoThanhChu = "Unsupported language" End Select
End Function
Trong đó, bạn định nghĩa SoThanhChuVi và SoThanhChuEn tương ứng với tiếng Việt và tiếng Anh.
7. Thực hành thực tế: Tạo báo cáo tài chính
Giả sử bạn có bảng dữ liệu:
| Số lượng | Đơn giá | Thành tiền |
|---|---|---|
| 10 | 50,000 | 500,000 |
| 5 | 120,000 | 600,000 |
Bạn muốn hiển thị Thành tiền bằng chữ. Dưới đây là cách thực hiện:
- Cột A: Số lượng. Jaz.
- Cột B: Đơn giá.
- Cột C:
=A2B2(Thành tiền). - Cột D:
=SoThanhChu(C2)(Số tiền bằng chữ).
Kết quả:
| Số lượng | Đơn giá | Thành tiền | Thành tiền (chữ) |
|---|---|---|---|
| 10 | 50,000 | 500,000 | năm trăm nghìn đồng |
| 5 | 120,000 | 600,000 | sáu trăm nghìn đồng |
Ghi chú: Nếu sử dụng add-in, công thức sẽ thay đổi thành
=NUMTOWORD(C2).
8. Đề xuất công cụ hỗ trợ
| Công cụ | Mô tả | Lợi ích |
|---|---|---|
| Add-in “Number to Words” | Tích hợp hàm chuyển số thành chữ | Dễ sử dụng, hỗ trợ nhiều ngôn ngữ |
| VBA Custom Function | Tự viết hàm tùy chỉnh | Linh hoạt, không phụ thuộc add-in |
| Google Sheets | Định dạng số thành chữ bằng hàm TEXT | Đơn giản, không cần cài thêm {} |
| Python + openpyxl | Scripting tự động | Dùng khi cần xử lý dữ liệu lớn, phức tạp |
9. Kết luận
Việc chuyển số thành chữ trong Excel 2026 không symbole là công việc khó khăn. Bằng cách tận dụng VBA, add-in, hoặc các công cụ hỗ trợ, bạn có thể thực hiện công việc này một cách nhanh chóng, chính xác và dễ dàng quản lý. Hãy lựa chọn phương pháp phù hợp với quy mô dữ liệu và nhu cầu công việc của bạn. Khi áp dụng các mẹo tối ưu hoá hiệu suất, bạn sẽ tiết kiệm được thời gian và tránh được những lỗi không đáng có.
Hãy thử ngay các bước trên để tối ưu hoá quy trình làm việc của mình và nâng cao chất lượng tài liệu báo cáo.

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