Amount In Words In Excel: Cách Chuyển Số Sang Từ Trong Excel

Giới thiệu

Trong nhiều lĩnh vực tài chính, kế toán, ngân hàng và pháp lý, việc chuyển đổi số sang dạng chữ là một yêu cầu bắt buộc. Khi làm việc với Excel — công cụ mạnh mẽ nhất để quản lý dữ liệu số, báo cáo tài chính và phân tích — việc tự động chuyển số sang từ giúp giảm thiểu sai sót, tăng tính chuyên nghiệp và tiết kiệm thời gian. Bài viết này sẽ giới thiệu chi tiết các phương pháp làm điều này trong Excel, từ các công thức đơn giản, VBA tùy chỉnh, Power Query, cho tới các add-in bên thứ ba. Bạn sẽ học cách áp dụng từng phương pháp, những ưu điểm, hạn chế, và cách tránh các lỗi thường gặp.

Tại sao cần chuyển số sang từ trong Excel?

  1. Độ tin cậy cao: Khi số được ghi bằng chữ, người đọc khó có thể chỉnh sửa hoặc nhầm lẫn. Điều này đặc biệt quan trọng trong hợp đồng, hóa đơn hoặc báo cáo tài chính, nơi mỗi sai sót có thể gây hậu quả pháp lý hoặc tài chính.
  2. Tiêu chuẩn pháp lý: Nhiều quy định pháp lý yêu cầu số tiền phải được ghi bằng chữ trong tài liệu hợp pháp, ví dụ như trong hợp đồng mua bán, hợp đồng vay, hoặc biên lai thu chi.
  3. Cải thiện giao diện: Một bảng tính có cả số và chữ thường dễ đọc hơn, giúp người dùng nhanh chóng nhận biết giá trị và tránh nhầm lẫn.
  4. Tự động hóa quy trình: Việc viết công thức hoặc macro để chuyển đổi số sang chữ giúp giảm thiểu công việc thủ công và tránh sai sót do nhập liệu thủ công.

Phương pháp 1: Sử dụng công thức Excel nội bộ

1.1. Công thức đơn giản với TEXT và CHOOSE

Excel không có hàm tích hợp để chuyển số thành chữ. Tuy nhiên, bạn có thể tạo một công thức phức tạp bằng cách kết hợp các hàm TEXT, INT, MOD, CHOOSE, IF, v.v. Dưới đây là một ví dụ chuyển số từ 0 đến 999:

=IF(A1=0,"không","")
& IF(INT(A1/100)>0,CHOOSE(INT(A1/100)+1,"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(MOD(INT(A1/10),10)>1,CHOOSE(MOD(INT(A1/10),10)+1,"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"),IF(MOD(A1,10)>0,CHOOSE(MOD(A1,10)+1,"một","hai","ba","bốn","năm","sáu","bảy","tám","chín"),""))

Phương pháp này khá hạn chế: chỉ áp dụng được cho số nhỏ, cần chỉnh sửa nếu muốn mở rộng lên hàng nghìn, triệu, tỷ.

1.2. Công thức mở rộng với TEXTJOIN và SEQUENCE

Nếu bạn đang dùng Excel 365 hoặc 2026, có thể tận dụng hàm TEXTJOIN và SEQUENCE để viết một công thức linh hoạt hơn. Ví dụ:

=TEXTJOIN(" ",TRUE, IF(SEQUENCE(1,1,0,1)>0,"","không"), CHOOSE(INT(A1/1000000000)+1,"","một tỷ","hai tỷ","ba tỷ","bốn tỷ","năm tỷ","sáu tỷ","bảy tỷ","tám tỷ","chín tỷ"), CHOOSE(INT(MOD(A1,1000000000)/100000000)+1,"","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"), ...
)

Tuy nhiên, công thức sẽ rất dài và khó bảo trì. Vì vậy, phương pháp này thực sự chỉ phù hợp với những người có kinh nghiệm sâu trong Excel và muốn tránh VBA.

Phương pháp 2: Sử dụng VBA tùy chỉnh

VBA (Visual Basic for Applications) cho phép tạo hàm người dùng (UDF) để chuyển số sang chữ một cách linh hoạt và dễ bảo trì. Dưới đây là một ví dụ chi tiết.

2.1. Tạo hàm NumberToWords

  1. Mở Excel, nhấn Alt + F11 để mở Visual Basic Editor.
  2. Chèn một module mới: Insert > Module.
  3. Dán đoạn mã sau vào module:
Function NumberToWords(ByVal MyNumber As Variant) As String Dim UnitsArray, TensArray, ScalesArray Dim Words As String Dim i As Integer, j As Integer, k As Integer Dim TempNumber As String Dim TempWord As String If IsNumeric(MyNumber) Then MyNumber = Trim(CStr(MyNumber)) Else NumberToWords = "Error: Input not numeric" Exit Function End If UnitsArray = Array("", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") TensArray = 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") ScalesArray = Array("", "nghìn", "triệu", "tỷ") If Len(MyNumber) > 12 Then NumberToWords = "Too big" Exit Function End If ' Insert leading zeros to make length multiple of 3 TempNumber = Right("000000000000" & MyNumber, 12) For i = 1 To 4 k = 3 (i - 1) TempWord = "" ' Hundred place If Mid(TempNumber, k + 1, 1) <> "0" Then TempWord = UnitsArray(CInt(Mid(TempNumber, k + 1, 1))) & " trăm " End If ' Tens and units Dim t As Integer, u As Integer t = CInt(Mid(TempNumber, k + 2, 1)) u = CInt(Mid(TempNumber, k + 3, 1)) If t = 1 Then Select Case u Case 0: TempWord = TempWord & "mười " Case 1: TempWord = TempWord & "mười một " Case 2: TempWord = TempWord & "mười hai " Case 3: TempWord = TempWord & "mười ba " Case 4: TempWord = TempWord & "mười bốn " Case 5: TempWord = TempWord & "mười lăm " Case 6: TempWord = TempWord & "mười sáu " Case 7: TempWord = TempWord & "mười bảy " Case 8: TempWord = TempWord & "mười tám " Case 9: TempWord = TempWord & "mười chín " End Select ElseIf t > 1 Then TempWord = TempWord & TensArray(t) & " " If u > 0 Then TempWord = TempWord & UnitsArray(u) & " " End If Else If u > 0 Then TempWord = TempWord & UnitsArray(u) & " " End If End If If TempWord <> "" Then TempWord = TempWord & ScalesArray(i - 1) & " " Words = TempWord & Words End If Next i NumberToWords = Trim(Words)
End Function
  1. Lưu công việc và quay lại Excel.

2.2. Sử dụng hàm

Giả sử ô A1 chứa số 123456789. Trong ô B1 nhập:

=NumberToWords(A1)

Kết quả sẽ là:

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

2.3. Tùy chỉnh thêm

  • Chèn “đồng” hoặc “đồng chẵn”: Bạn có thể sửa hàm để thêm “đồng” sau số.
  • Xử lý số thập phân: Thêm phần xử lý sau dấu chấm phẩy để chuyển phần thập phân sang chữ (ví dụ “lẻ một”).
  • Chuyển sang tiếng Anh: Thay đổi mảng UnitsArray và TensArray sang tiếng Anh.

VBA cung cấp sự linh hoạt tối đa và dễ bảo trì hơn so với công thức phức tạp.

Phương pháp 3: Power Query (Get & Transform)

Power Query là công cụ mạnh mẽ để làm sạch, biến đổi dữ liệu trong Excel 2026 trở đi. Bạn có thể tạo một “Custom Column” sử dụng M code để chuyển số sang chữ.

3.1. Tạo hàm trong Power Query

  1. Chọn dữ liệu, vào Data > Get & Transform Data > From Table/Range.
  2. Trong Power Query Editor, vào Add Column > Custom Column.
  3. Dán đoạn M code dưới đây:
let NumberToWords = (num as number) as text => let Units = {"", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín"}, Tens = {"", "", "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"}, Scales = {"", "nghìn", "triệu", "tỷ"}, Pad = Text.PadStart(Text.From(num), 12, "0"), Groups = List.Transform(List.Numbers(0,4), each Text.Middle(Pad, 3(_, 3))), Words = List.Transform(Reversed(Groups), (grp, idx) => let h = Number.FromText(Text.Middle(grp, 0,1)), t = Number.FromText(Text.Middle(grp, 1,1)), u = Number.FromText(Text.Middle(grp, 2,1)), Hundred = if h > 0 then Units{h} & " trăm " else "", TenUnit = if t = 1 then if u = 0 then "mười " else "mười " & Units{u} & " " else if t > 1 then Tens{t} & " " & if u > 0 then Units{u} & " " else "" else if u > 0 then Units{u} & " " else "", Scale = if idx > 0 then " " & Scales{idx} else "", GroupText = Hundred & TenUnit & Scale in Text.Trim(GroupText) ), Result = Text.Trim(Text.Combine(Reversed(Words), " ")) in Result
in NumberToWords
  1. Gọi hàm trong Custom Column: =NumberToWords(Column1).

3.2. Lưu và áp dụng

Sau khi áp dụng, Power Query sẽ tạo cột mới chứa số dưới dạng chữ. Bạn có thể tải dữ liệu trở lại Excel bằng cách Close & Load.

3.3. Ưu và nhược điểm

Amount In Words In Excel
Amount In Words In Excel
  • Ưu điểm: Không cần VBA, có thể tái sử dụng trong bất kỳ bảng tính nào.
  • Nhược điểm: Power Query có thể khó hiểu đối với người dùng mới, và hỗ trợ tùy chỉnh ít hơn so với VBA.

Phương pháp 4: Add-in và công cụ bên thứ ba

4.1. Add-in “Number to Words”

Nhiều nhà phát triển cung cấp add-in cho Excel, như “Number to Words” của Ablebits hoặc “Excel Add-in: Convert Numbers to Words”. Bạn chỉ cần cài đặt add-in, rồi sử dụng hàm mới được cung cấp (ví dụ =TextFromNumber(A1)).

Ưu điểm: nhanh chóng, không cần viết code. Nhược điểm: phụ thuộc vào phần mềm của bên thứ ba, chi phí khi sử dụng phiên bản trả phí.

4.2. Công cụ trực tuyến

Có số lượng lớn trang web cho phép nhập số và nhận kết quả dạng chữ. Bạn có thể sao chép kết quả vào Excel. Tuy nhiên, phương pháp này không tự động và không thực sự phù hợp cho quy trình làm việc hàng loạt.

Các lỗi thường gặp và cách khắc phục

LỗiNguyên nhânGiải pháp
Hàm trả về “Error: Input not numeric”Dữ liệu không phải số, có ký tự đặc biệtKiểm tra dữ liệu đầu vào, loại bỏ ký tự không hợp lệ
Kết quả thiếu “trăm”Phần “hundred” bị bỏ quaKiểm tra đoạn mã xử lý phần trăm, chắc chắn không bỏ qua khi giá trị = 0
Kết quả “đô la” thay vì “đồng”Phần hậu tố chưa được đưa vàoThêm hậu tố “đồng” vào cuối hàm, hoặc tùy chỉnh thêm trong add-in
Kết quả sai khi có số thập phânKhông xử lý phần thập phânThêm phần mã sau dấu chấm phẩy, chuyển phần thập phân sang chữ (ví dụ “lẻ một”)
Hàm chạy chậm khi áp dụng cho hàng nghìn ôVBA không được tối ưuSử dụng hàm vectorized, hoặc chuyển sang Power Query

Mẹo và thủ thuật

  1. Sử dụng TEXT với định dạng tùy chỉnh: Nếu bạn muốn số được hiển thị dưới dạng “đồng chẵn”, có thể kết hợp công thức TEXT(A1,"#,##0") & " đồng chẵn".
  2. Tự động cập nhật khi chỉnh sửa: Khi dùng VBA, bật tính năng Application.EnableEvents = True để tự động cập nhật khi dữ liệu thay đổi.
  3. Tối ưu Power Query: Sử dụng Table.TransformColumns để áp dụng hàm cho nhiều cột cùng lúc, giảm số lần tải dữ liệu.
  4. Ghi nhận lỗi: Trong VBA, sử dụng On Error Resume Next và MsgBox để hiển thị lỗi rõ ràng.

Ứng dụng thực tế

4.1. Hóa đơn điện tử

Khi xuất hóa đơn điện tử, phần “số tiền” cần được ghi rõ bằng chữ để tránh tranh chấp. Bạn có thể tạo một template Excel với cột “Số tiền” và cột “Số tiền bằng chữ” sử dụng hàm NumberToWords.

4.2. Báo cáo tài chính

Trong báo cáo tài chính, phần “tổng cộng” thường cần ghi bằng chữ. Dùng Power Query để tự động chuyển đổi số thành chữ trong phần “Tổng cộng” của báo cáo.

4.3. Hợp đồng vay

Trong hợp đồng vay, số tiền vay được ghi bằng chữ. Bạn có thể tạo một macro trong Excel để tự động cập nhật giá trị số và chữ khi người dùng nhập số.

4.4. Phát hành chứng khoán

Trong chứng khoán, khi ghi nhận số lượng cổ phiếu và giá trị, có thể cần ghi số tiền bằng chữ trong các tờ khai. Sử dụng add-in hoặc VBA giúp tiết kiệm thời gian.

Kết luận

Việc chuyển số sang dạng chữ trong Excel là một thao tác quan trọng, giúp tăng tính chính xác, chuyên nghiệp và tuân thủ quy định pháp lý. Mặc dù Excel không có hàm tích hợp, nhưng bạn có thể dễ dàng đạt được mục tiêu này thông qua nhiều phương pháp khác nhau: công thức phức tạp, VBA tùy chỉnh, Power Query, hoặc add-in bên thứ ba. Mỗi phương pháp có ưu nhược điểm riêng, tùy thuộc vào nhu cầu, kỹ năng và môi trường làm việc của bạn.

  • Nếu bạn muốn giải pháp nhanh nhất, miễn phí và không phụ thuộc vào phần mềm bên thứ ba, hãy thử VBA.
  • Nếu bạn đã quen thuộc với Power Query, đây là một lựa chọn không cần viết code.
  • Nếu bạn cần giải pháp “sẵn sàng” và không muốn tự viết code, add-in là lựa chọn phù hợp.

Bằng cách lựa chọn phương pháp phù hợp nhất, bạn sẽ có thể tự động chuyển đổi số sang chữ một cách chính xác, tiết kiệm thời gian và nâng cao chất lượng công việc 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