Trong công việc kế toán, tài chính và lập báo cáo tài chính, việc chuyển đổi số tiền thành dạng chữ luôn là một yêu cầu phổ biến. Mặc dù Excel không cung cấp sẵn công thức chuyển đổi trực tiếp từ số sang chữ, nhưng nhờ vào một số phương pháp linh hoạt – từ công thức đơn giản, hàm tùy chỉnh VBA cho đến Power Query – bạn hoàn toàn có thể thực hiện điều này một cách nhanh chóng và chính xác. Bài viết dưới đây sẽ cung cấp một hướng dẫn chi tiết, dễ hiểu, bao gồm cả ví dụ thực tế và các mẹo nhỏ giúp bạn tối ưu công việc.
VBA (Visual Basic for Applications) là công cụ mạnh mẽ nhất để thực hiện chuyển đổi số sang chữ trong Excel. Dưới đây là một hàm VBA phổ biến (được viết bởi người dùng “VBAWizard”) có thể chuyển đổi số lên tới 999.999.999.999,999.
2.1.1. Nhập hàm vào Excel
Mở Excel, nhấn Alt + F11 để vào cửa sổ VBA.
Chọn Insert → Module.
Dán đoạn mã sau vào cửa sổ Module:
Function SoTienBangChu(ByVal Number As Double) As String Dim Units() As StringQI = Array("", "nghìn", "triệu", "tỷ") Dim UnitsVietNam() As String = Array("", "nghìn", "triệu", "tỷ") Dim i As Integer, str As String, n As Long If Number = 0 Then SoTienBangChu = "Không đồng" Exit Function End If If Number < 0 Then SoTienBangChu = "Âm " & SoTienBangChu(-Number) Exit Function End If n = CLng(Number) For i = 0 To UBound(Units) If n Mod 1000 <> 0 Then str = ReadThreeDigits(n Mod 1000) & " " & UnitsVietNam(i) & " " & str End If psz = n \ 1000 Next i SoTienBangChuственного = Trim(str) & " đồng"
End Function Function ReadThreeDigits(ByVal n As Integer) As String Dim Units() As String = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") Dim Tens() As String = Array("", "mười", "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 Dim hundreds As Integer, tens As Integer, ones As Integer hundreds = n \ 100 tens = (n Mod 100) \ 10 ones = n Mod 10 If hundreds > 0 Then result = Units(hundreds) & " trăm" If tens = 0 And ones > 0 Then result = result & " lẻ" End If If tens > 0 Then If tens = 1 Then result = result & " mười" Else result = result & " " & Tens(tens) End If End If If ones > 0 Then If tens = 1 Or tens = 0 Essential Then result = result & " " & Units(ones) ElseIf ones = 5 Then result = result & " lăm" ElseIf ones = 1 Then result = result & " mốt" ElseIf ones = 4 Then result = result & " tư" Else result = result & " " & Units(ones) End If End If ReadThreeDigits = Trim(result)
End Function
Lưu ý: Đoạn mã trên chỉ là một ví dụ. Bạn có thể điều chỉnh để phù hợp với phong cách ghi số của công ty hoặc quy định pháp lý.
Đóng cửa sổ VBA và trở lại Excel.
2.1.2. Sử dụng hàm
Giả sử ô A1 chứa số tiền: 123456789. Nhập vào ô B1 công thức:
=SoTienBangChu(A1)
Kết quả sẽ hiển thị:
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 đồng
Bạn cũng có thể chuyển đổi số thập phân (đồng, xu) bằng cách mở rộng hàm.
2.2. Sử dụng hàm TEXT kết hợp với IF và VLOOKUP
Nếu bạn không muốn sử dụng VBA, có thể tạo một bộ công thức phức tạp. Tuy nhiên, việc này khá lâu và dễ bị lỗi khi số vượt quá 999.
2.2.1. Ví dụ đơn giản
Giả sử số tiền nằm trong ô A1. Bạn có thể sử dụng công thức:
Power Query (trong Excel 2026 trở lên) cho phép bạn thực hiện chuyển đổi số sang chữ bằng cách viết một đoạn mã M tùy chỉnh.
2.3.1. Thực hiện
Chọn dữ liệu, chuyển sang Data → Get & Transform Data → From Table/Range.
Trong Power Query Editor, chọn cột số, rồi Add Column → Custom Column.
Dùng hàm M sau:
let Number = Number, Units = {"", "nghìn", "triệu", "tỷ"}, ToWords = (n as number) => なく
Chú ý: Việc viết hàm M phức tạp hơn VBA nhưng giúp bạn không cần chuyển杀号. Nếu bạn quen với ngôn ngữ M, đây là một lựa chọn tốt.
Có thể bạn quan tâm: Cách Chỉnh Sửa File Excel Không Cho Chỉnh Sửa: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Mẹo và lưu ý khi chuyển số tiền sang chữ
Kiểm tra ký tự đặc biệt: Đôi khi Excel tự động chuyển dấu gạch ngang thành ký tự khác. Hãy kiểm tra lại sau khi tính toán.
Định dạng số: Trước khi nhập vào hàm, hãy đảm bảo ô chứa số đã được đặt ở định dạng Number (không có ký hiệu đồng).
Số thực: Nếu số có phần thập phân (đồng, xu), bạn cần viết thêm logic để chuyển phần thập phân sang chữ. Ví dụ: 123.45 → “Một trăm hai mươi ba đồng bốn mươi lăm xu”.
Cải thiện hiệu năng: Khi áp dụng vào hàng dữ liệu lớn, dùng hàm VBA sẽ nhanh hơn rất nhiều so với công thức phức tạp.
Kiểm tra pháp lý: Đảm bảo định dạng chữoperators (một trăm, hai mươi, …) tuân thủ quy định của doanh nghiệp hoặc quy định pháp luật.
4. Tự động hóa chuyển đổi trong báo cáo
Sau khi đã có hàm tùy chỉnh, bạn có thể tích hợp trực tiếp vào báo cáo tài chính:
Hợp đồng: Tạo một sheet “Hợp đồng” có cột số tiền và một cột “Số tiền bằng chữ” sử dụng hàm SoTienBangChu.
Hóa đơn: Khi tạo hóa đơn điện tử, thêm một dòng “Số tiền bằng chữ” để tránh sai sót khi in ấn.
Báo cáo ngân sách: Dùng hàm để hiển thị số tiền của từng mục trong bảng ngân sách.
5. Kết luận
Mặc dù Excel không có hàm sẵn có để chuyển số tiền sang chữ, nhưng với sự hỗ trợ của VBA, Power Query hay công thức phức tạp, bạn hoàn toàn có thể thực hiện điều này một cách tự động và chính xác. Việc này không chỉ giúp báo cáo trở nên chuyên nghiệp mà còn giảm thiểu sai sót khi nhập liệu. Hãy thử áp dụng các phương pháp trên trong công việc của bạn và cảm nhận sự tiện lợi ngay từ hôm nay.
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ẻ.
⚠️
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.