Có thể bạn quan tâm: Cách Copy File Excel Này Sang File Excel Khác
Giới thiệu chung
Trong nhiều lĩnh vực như kế toán, tài chính, ngân hàng hay quản lý doanh nghiệp, việc chuyển đổi số sang chữ thường được yêu cầu khi lập hóa đơn, biên bản, báo cáo tài chính, hay các tài liệu pháp lý khác. Excel là công cụ mạnh mẽ giúp tự động hoá công việc này, tuy nhiên phiên bản Excel 2007 không cung cấp hàm tích hợp trực tiếp để chuyển đổi số thành chữ. Để giải quyết vấn đề này, người dùng có thể tận dụng VBA (Visual Basic for Applications) để viết một hàm tùy chỉnh, hoặc sử dụng công thức phức tạp kết hợp với hàm SUBSTITUTE, LEFT, RIGHT, MID, LEN, TEXT và một số hàm logic khác.
Bài viết này sẽ hướng dẫn chi tiết cách cài đặt và sử dụng hàm “Số thành chữ” trong Excel 2007, từ khâu chuẩn bị môi trường VBA, viết mã, tới cách áp dụng hàm trong bảng tính thực tế. Ngoài ra, chúng ta cũng sẽ xem xét một số mẹo, thủ thuật để tối ưu hiệu năng, tránh lỗi khi làm việc với các số lớn hoặc số thập phân.
Có thể bạn quan tâm: Cách Chỉnh Sửa File Excel Kết Xuất Từ Htkk
1. Tại sao Excel 2007 không có hàm chuyển đổi số sang chữ?
Trong các phiên bản mới hơn của Excel (Excel 2026 trở đi), Microsoft đã bổ sung hàm TEXT có thể chuyển đổi số thành văn bản theo định dạng tùy chỉnh, nhưng vẫn chưa hỗ trợ chuyển sang chữ. Đ bloquear. Vì lý do đó, nhiều người dùng vẫn phải tự viết hàm VBA, hoặc sử dụng các add-in (bổ sung) như “Currency to Words” hoặc “Number to Words” từ bên thứ ba. Tuy nhiên, những add-in này thường chi phí, hoặc không tương thích hoàn toàn với Excel 2007. Do đó, viết một hàm VBA tùy chỉnh là giải pháp tối ưu và linh hoạt nhất.
Có thể bạn quan tâm: Cách Chèn Ảnh Vừa Khung Có Sẵn Trong Excel
2. Chuẩn bị môi trường VBA trong Excel 2007
2.1 Kích hoạt Tab “Developer”
- Mở Excel 2007.
- Nhấn vào nút Office (biểu tượng vòng tròn ở góc trên trái).
- Chọn Excel Options.
- Trong cửa sổ Popular, đánh dấu vào ô Show Developer tab in the Ribbon.
- Nhấn OK. Tab Developer sẽ xuất hiện trên thanh Ribbon.
2.2 Mở cửa sổ VBA
- Trên tab Developer, nhấn nút Visual Basic (hoặc nhấn
ALT + F11). - Cửa sổ Microsoft Visual Basic for Applications sẽ hiện lên. Đây là nơi bạn viết và lưu mã VBA.
2.3 Tạo Module mới
- Trong cửa sổ Project Explorer (thường nằm bên trái), click chuột phải vào tên workbook hiện tại.
- Chọn Insert → Module.
- Một module mới (ví dụ
Module1) sẽ xuất hiện trong Project Explorer. Đây là nơi bạn sẽ dán mã hàm.
3. Viết hàm “Số thành chữ” trong VBA
3.1 Cấu trúc tổng quát
Hàm chúng ta sẽ đặt tên là SoThanhChu.IAU. Hàm nhận một tham số So (số cần chuyển) và trả về một chuỗi (văn bản) chứa số đó viết bằng chữ. Dưới đây là mã hoàn chỉnh:
Option Explicit Public Function SoThanhChu(ByVal So As Variant) As String Dim SoDuong As Long Dim SoThapPhan As Double Dim Chuoi As String ' Kiểm tra kiểu dữ liệu đầu vào If Not IsNumeric(So) Then SoThanhChu = "Không phải là số" Exit Function End If ' Kiểm tra số âm If So < 0 Then SoThanhChu = "Âm " & SoThanhChu(-So) Exit Function End If ' Lấy phần nguyên và phần thập phân SoDuong = Int(So) SoThapPhan = So - SoDuong ' Định dạng phần nguyên thành chữ Chuoi = SoThanhChuGiua(SoDuong) ' Nếu có phần thập phân, chuyển thành chữ If SoThapPhan > 0 Then Dim SoThap As Long SoThap = Round(SoThapPhan 100) ' Chỉ lấy 2 chữ số thập phân Chuoi = Chuoi & " phẩy " & SoThanhChuGiua(SoThap) End If SoThanhChu = Chuoi
End Function Private Function SoThanhChuGiua(ByVal So As Long) As String Dim DoiTuong As Variant DoiTuong = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") Dim DonVi As Variant DonVi = Array("", "mươi", "trăm", "nghìn", "triệu", "tỷ") Dim Kq As String Kq = "" If So = 0 Then SoThanhChuGiua = "không" Exit Function End If ' Xử lý từng nhóm ba số Dim i As Integer Dim SoHe As Long Dim SoLan As Long Dim SoLan0 As Long i = 0 Do While So > 0 SoHe = So Mod 1000 So = Int(So / 1000) If SoHe > 0 Then Dim SoHeChuாட்சி As String SoHeChu = SoHeChuyen(SoHe) If i > 0 Then SoHeChu = SoHeChu & " " & DonVi(i) End If If Kq <> "" Then Kq = SoHeChu & " " & Kq Else Kq = SoHeChu End If End If i = i + 1 Loop SoThanhChuGiua = Kq
End Function Private Function SoHeChuyen(ByVal SoHe As Long) As String Dim DoiTuong As Variant DoiTuong = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") Dim Kq As String Kq = "" Dim HaiSo As Long HaiSo = SoHe \ 100 Dim BaSo As Long BaSo = SoHe Mod 100 If HaiSo > 0 Then Kq = DoiTuong(HaiSo) & " trăm" If BaSo > 0 Then
}" End If ' Phần hàng chục và hàng đơn vị Dim DonVi As Long DonVi = BaSo \ 10 Dim DonVi1 As Long DonVi1 = BaSo Mod 10 If DonVi > 0 Then If DonVi = 1 Then ' 10-19 Select Caseগুলি Case 0: Kq = Kq & " mười" Case 1: Kq = Kq & " mười một" Case 2: Kq = Kq & " mười hai" Case 3: Kq = Kq & " mười ba" Case 4: Kq = Kq & " mười bốn" Case 5: fez Case 6: Kq = Kq & " mười sáu" Case 7: Kq = Kq & " mười bảy" Case 8: Kq = Kq & " mười tám" Case 9: Kq = Kq & " mười chín" End Select Else Kq = Kq & " " & DoiTuong(DonVi) & " mươi" If DonVi1 = 1 Then Kq = Kq & " mốt" ElseIf DonVi1 = 4 Then Kq = Kq & " tư" ElseIf DonVi1 = 5 Then Kq = Kq & " lăm" ElseIf DonVi1 > 0 Then Kq = Kq & " " & DoiTuong(DonVi1) End If End If Else ' Ba số nhỏ hơn 10 If DonVi1 > 0 Then Kq = Kq & " " & DoiTuong(DonVi1) End If End If SoHeChuyen = Kq
End Function
Lưu ý: Mã trên chỉ là một phiên bản cơ bản. Bạn có thể tùy chỉnh thêm để phù hợp với quy tắc viết số trong từng vùng miền (ví dụ: chữ “tư” thay vì “bốn” trong số 4 khi ở hàng đơn vị sau mười).
3.2 Giải thích chi tiết từng phần
Option Explicit: Bắt buộc khai báo biến trước khi sử dụng, giúp tránh lỗi gõ sai.SoThanhChu: Hàm chính. Kiểm tra kiểu dữ liệu, xử lý số âm, tách phần nguyên và phần thập phân.SoThanhChuGiua: Hàm phụ xử lý các nhóm ba số (đơn vị, nghìn, triệu, tỷ). Sử dụng vòng lặpDo While So > 0để lặp qua từng nhóm 1000.SoHeChuyen: Hàm phụ xử lý một nhóm ba số (0-999). Xử lý phần trăm, mươi, và đơn vị. Đặc biệt, xử lý các trường hợp đặc biệt như “mười một”, “mười bốn”, “mười lăm”, “mười sáu”, “mười bảy”, “mười tám”, “mười chín”, cũng như “mốt”, “tư”, “lăm” trong các số từ 21, 24, 25.Round(SoThapPhan 100): Chỉ lấy hai chữ số thập phân. Nếu bạn muốn lấy nhiều hơn, có thể thay đổi số lượng chữ số tương ứng.
3.3 Kiểm tra hàm trong Excel
- Đóng cửa sổ VBA và trở lại bảng tính.
- Nhập vào một ô giá trị số, ví dụ
123456789. - Trong ô khác, nhập công thức:
=SoThanhChu(A1)(đối với ô A1 chứa số). - Nhấn
Enter. Bạn sẽ thấy văn bản: “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”.
4. Mẹo và thủ thuật tối ưu
4.1 Tối ưu hiệu năng khi làm việc với dữ liệu lớn
- Giảm kích thước biến: Sử dụng kiểu dữ liệu
Longcho các số nguyên thay vìVariant.Variantsẽ chấp nhận nhiều kiểu dữ liệu nhưng tốn bộ nhớ và thời gian xử lý. - Sử dụng
Static: Nếu bạn muốn lưu trữ giá trị tạm thời để tái sử dụng trong cùng một phiên, bạn có thể khai báo biếnStatic. Ví dụ:Static DoiTuong(). - Tránh gọi hàm quá thường xuyên: Khi làm việc với hàng nghìn ô, việc gọi hàm VBA naitively sẽ chậm hơn so với các hàm Excel tiêu chuẩn. Bạn có thể tạo một cột trung gian lưu kết quả tạm, hoặc sử dụng
Application.Volatile = Falseđể giảm tải.
4.2 Xử lý các trường hợp đặc biệt

Có thể bạn quan tâm: Cách Copy Hình Ảnh Từ File Pdf Sang Excel
- Số 0: Hàm hiện המבחר trả về “không”. Nếu bạn muốn “không đồng nghĩa với không có giá trị”, có thể kiểm tra trước khi gọi hàm.
- Số lớn hơn 1 tỷ: Hàm hỗ trợ tới 10^12 (tỷ). Nếu cần xử lý số lớn hơn, bạn có thể mở rộng mảng
DonVithêm “nghìn tỷ” hoặc “nghìn nghìn tỷ”. - Số thập phân: Mặc định hàm lấy 2 chữ số thập phân. Nếu muốn lấy nhiều hơn, thay đổi
Round(SoThapPhan 100)thànhRound(SoThapPhan 10^n)và điều chỉnh logic chuyển thập phân.
4.3 Định dạng chữ viết
- Chữ in hoa: Thêm dòng
SoThanhChu = Application.WorksheetFunction.Proper(SoThanhChu)nếu bạn muốn chữ đầu tiên của mỗi từ in hoa. - Kiểm tra dấu câu: Nếu muốn thêm dấu “đô” hoặc “đồng” sau chuỗi, chỉ cần nối thêm chuỗi trong hàm chính:
Chuoi = Chuoi & " đồng".
4.4 Bảo mật mã VBA
- Kích hoạt bảo vệ module: Trong cửa sổ VBA, vào Tools → VBAProject Properties → tab Protection → tick Lock project for viewing. Sau đó nhập mật khẩu. Điều này ngăn người dùng xem içine mã nguồn.
- Kích hoạt bảo vệ workbook: Khi lưu file, chọn Tools → Options → tab Miscellaneous → tick Lock project for viewing.
5. Sử dụng hàm trong các trường hợp thực tế
5.1 Lập hóa đơn bán hàng
Bạn có thể tạo bảng tính gồm các cột: Mã hàng, Tên hàng, Giá bán, Số lượng, Thành tiền. Thành tiền được tính bằng công thức =Giá bánSố lượng. Sau đó, trong cột “Thành tiền bằng chữ”, nhập công thức =SoThanhChu(Tiền). Khi người dùng nhập số tiền, ô sẽ tự động hiển thị số tiền bằng chữ.
5.2 Báo cáo tài chính
Trong báo cáo tài chính, một số mục như “Tổng lợi nhuận”, “Doanh thu”, “Chi phí” thường được viết bằng chữ trong phần bản in của báo cáo. Bạn có thể áp dụng hàm SoThanhChu cho các ô tổng này, sau đó sao chép và dán lên phần “Bản in” của báo cáo.
5.3 Đơn vị đo lường
Nếu bạn cần chuyển đổi số thành chữ kèm theo đơn vị, ví dụ “123,45 km” → “một trăm hai mươi ba phẩy bốn năm km”, bạn chỉ cần khai báo hàm như sau: =SoThanhChu(A1) & " km". Bạn cũng có thể làm tương tự cho đơn vị tiền tệ, thời gian, lượng.
6. Giải quyết lỗi thường gặp
| Lỗi | Nguyên nhân | Giải pháp |
|---|---|---|
#NAME? | Hàm không được nhận dạng | Kiểm tra tên hàm chính xác, lưu workbook, và khởi động lại Excel. |
#VALUE! | Đầu vào không phải số | Kiểm tra dữ liệu trong ô, hoặc đặt If Not IsNumeric(So) Then trong hàm. |
Overflow! | Số vượt quá giới hạn Long | Giới hạn số lớn, hoặc thay đổi kiểu dữ liệu thành Double. |
Runtime error 1004 | Cố gắng ghi vào ô bị bảo vệ | Giải phóng bảo vệ ô hoặc đổi quyền truy cập. |
Chữ lặp lại | Lỗi trong vòng lặp While | Kiểm tra điều kiện dừng, đảm bảo So giảm dần. |
7. Bổ sung: Thay thế hàm bằng add-in miễn phí
Nếu bạn không muốn viết mã VBA, có một số add-in miễn phí có thể tải về và cài đặt vào Excel 2007, ví dụ:
- Excel Number to Words Converter: Add-in này cung cấp hàm
NUMWORDSđể chuyển đổi số sang chữ. - Kutools for Excel: Bên trong Kutools, có công cụ chuyển đổi số thành chữ. Tuy nhiên, Kutools là phần mềm trả phí nhưng có phiên bản dùng thử.
Để cài đặt add-in:
- Tải file
.xlamtừ trang web. - Mở Excel, vào tab Developer → Excel Add-ins → Browse → chọn file.
- Tick vào hộp “Add-Ins” và nhấn OK.
- Hàm mới sẽ xuất hiện trong danh sách hàm Excel.
8. Tổng kết
Excel 2007 không cung cấp hàm chuyển đổi số sang chữ tích hợp sẵn. Tuy nhiên, với một đoạn mã VBA đơn giản, bạn hoàn toàn có thể tạo ra một hàm tùy chỉnh “Số thành chữ” linh hoạt, có thể xử lý các số nguyên, số thập phân, số âm, và hỗ trợ nhiều đơn vị khác nhau.
Bằng cách khai báo hàm trong một module, bạn có thể dễ dàng dùng nó trong bất kỳ ô nào trong workbook. Ngoài ra, bạn cũng có thể mở rộng chức năng, thêm định dạng, bảo mật, hay tích hợp với các add-in miễn phí.
Chúc bạn thành công trong việc tự động hoá công việc chuyển đổi số sang chữ trong Excel 2007, giúp tiết kiệm thời gian và giảm thiểu sai sót trong các tài liệu kế toán, tài chính, và báo cáo doanh nghiệp.

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