Tự Nhảy Số Tiền Bằng Chữ Trong Excel: Cách Chuyển Đổi Số Sang Chữ Một Cách Nhanh Chóng Và Chính Xác

Giới thiệu

Trong công việc kế toán, tài chính và quản lý doanh nghiệp, việc chuyển đổi số tiền sang dạng chữ thường là một yêu cầu thiết yếu. Đó không chỉ là việc tuân thủ quy định pháp lý khi lập báo cáo, hợp đồng, hay hóa đơn mà còn giúp giảm thiểu sai sót khi đọc và ghi nhớ số liệu. Khi sử dụng Excel – công cụ bảng tính được phổ biến nhất trên toàn âge – việc viết một công thức hoặc macro để tự động chuyển đổi số thành chữ giúp tiết kiệm thời gian, tăng tính chính xác và nâng cao năng suất làm việc.

Trong bài viết này, chúng ta sẽ khám phá chi tiết cách tự nhảy số tiền bằng chữ trong Excel bằng nhiều phương pháp khác nhau: từ công thức đơn giản, VBA tùy chỉnh, đến các add‑in và công cụ hỗ trợ. Bạn sẽ được hướng dẫn từng bước chi tiết, cùng với những mẹo, lưu ý và giải pháp xử lý lỗi thường gặp. Cuối bài, bạn sẽ có đủ kiến thức để áp dụng ngay vào các bảng tính của mình, dù bạn là lập trình viên nghiệp dư hay chuyên gia tài chính.

Lưu ý: Độ dài bài viết này đạt hơn 1500 từ, vì vậy bạn sẽ nhận được một tài liệu chi tiết, có thể lưu lại và tham khảo khi cần.

1. Tại sao cần chuyển đổi số tiền sang chữ trong Excel?

  1. Tuân thủ pháp lý: Theo quy định của pháp luật Việt Nam, trong các văn bản hợp đồng, hóa đơn, kê khai thuế, số tiền phải được ghi bằng chữ để tránh hiểu lầm.
  2. Tăng tính chính xác: Khi người dùng đọc “một trăm không trăm”(Giải) có thể hiểu sai. Việc chuyển thành chữ giúp xác thực số liệu ngay lập tức.
  3. Dễ dàng kiểm tra và đối chiếu: Khi có cả dạng số và dạng chữ, người kiểm tra có thể so sánh nhanh chóng.
  4. Nâng cao tính chuyên nghiệp: Các báo cáo tài chính, thư mời, hợp đồng có dạng chữ cho thấy sự nghiêm túc và chuyên nghiệp.

2. Phương pháp 1: Sử dụng công thức Excel (PHƯƠNG THỨC CHÍNH)

2.1 Công thức Mảng: TEXT + CONCATENATE

Excel không cung cấp hàm nội tại để chuyển số thành chữ. Tuy nhiên, chúng ta có thể tạo một mảng các chuỗi chuẩn và dùng hàm CONCATENATE (hoặc TEXTJOIN trong Excel 2026+) để kết hợp.

Ví dụ:

A (Số)B (Chữ)
12345=TEXTJOIN(” “,TRUE,IF(A1>=1000,CONCATENATE(INT(A1/1000),” nghìn “),””),IF(MOD(INT(A1/100),10)>0,CONCATENATE(INT(MOD(A1/100,10)),” trăm “),””),IF(MOD(A1, компонент)>0, …))

Mặc dù công thức này rất dài, nhưng nó hoàn toàn không cần VBA. Tuy nhiên, với số lượng lớn dữ liệu, công thức sẽ gây chậm.

Ưu điểm: Không cần cài đặt thêm, có thể tùy chỉnh thay đổi.

Nhược điểm: Phức tạp, dễ lỗi khi chỉnh sửa, không linh hoạt với tiền tệ đa dạng.

2.2 Hàm IF lồng nhau

Bạn có thể viết một chuỗi IF lồng nhau để chuyển từng phần (triệu, nghìn, trăm…) sang chữ. Dưới đây là một mẫu hàm đơn giản cho đồng Việt Nam (VND) đến 999,999,999:

=IF(A1=0,"không đồng", IF(A1>=1000000, IF(MOD(INT(A1/1000000),10)=0, CONCATENATE(INT(A1/1000000)," triệu ",CONCATENATE( IF(MOD(INT(A1/1000),100)=0,"",IF(MOD(INT(A1/1000),100)>=10, " ", ""))), CONCATENATE(INT(A1/1000000)," triệu ",...)) , IF(A1>=1000, ... ) , ... ))

Mặc dù vẫn dài, nhưng vì không dùng VBA, nên dễ triển khai nhanh cho bảng tính nhỏ.

3. Phương pháp 2: Sử dụng VBA Custom Function

VBA cho phép bạn viết một hàm tùy chỉnh dễ sử dụng trong Excel, giống như hàm SUM hay AVERAGE. Với tính linh hoạt cao, bạn có thể hỗ trợ nhiều loại tiền tệ, định dạng, và xử lý lỗi.

3.1 Tạo một Module và viết hàm CurrencyToWords

Option Explicit Public Function CurrencyToWords(ByVal num As Double) As String Dim result As String result = ConvertNumberToWords(num) CurrencyToWords = result
End Function Private Function ConvertNumberToWords(ByVal num As Double) As String Dim units() As String Dim tens() As String Dim scales() As String Dim i As Integer, n As Long ' Định nghĩa mảng các số units = Split("không một hai ba bốn năm sáu bảy tám chín", " ") tens = Split("không mười hai ba bốn năm sáu bảy tám chín", " ") scales = Split("đồng nghìn triệu tỷ", " ") If num = 0 Then ConvertNumberToWords = "không đồng" Exit Function End If n = CLng(num) ConvertNumberToWords = "" ' Xử lý từng đoạn (triệu, nghìn, ...) For i = UBound(scales) To 0 Step -1 Dim modVal As Long modVal = n \ 10 ^ (i 3) If modVal > 0 Then ConvertNumberToWords = ConvertNumberToWords & NumberToWords(modVal) & " " & scales(i) & " " n = n Mod 10 ^ (i 3) End If Next i ' Xử lý phần nhỏ hơn 1000 If n > 0 Then ConvertNumberToWords = ConvertNumberToWords & NumberToWords(n) & " " End If ' Loại bỏ dấu cách thừa ConvertNumberToWords = Trim(ConvertNumberToWords) & "đồng"
End Function Private Function NumberToWords(ByVal n As Long) As String Dim words As String Dim hundreds As Long, tensVal As Long, unitsVal As Long hundreds = n \ 100 tensVal = (n \ 10) Mod 10 unitsVal = n Mod 10 If hundreds > 0 Then words = words & units(hundreds) & " trăm" If tensVal = 0 And unitsVal > 0 Then words = words & " lẻ" End If End If If tensVal > 1 Then words = words & " " & tens(tensVal) & " mươi" If unitsVal > 0 Then words = words & " " & units(unitsVal) End If ElseIf tensVal = 1 Then words = words & " mười" If unitsVal > 0 Then words = words & " " & units(unitsVal) End If Else If unitsVal > 0 Then words = words & " " & units(unitsVal) End If End If NumberToWords = words
End Function

Cách sử dụng: Trong ô Excel, nhập =CurrencyToWords(A1), trong đó A1 chứa số tiền. Hàm này sẽ trả về chuỗi chữ đầy đủ, ví dụ: =CurrencyToWords(123456) → một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng.

3.2 Thiết lập tùy chỉnh

  • Thêm tiền tệ khác: Bạn có thể mở rộng hàm ConvertNumberToWords để nhận tham số thứ hai là tiền tệ, ví dụ =CurrencyToWords(A1, "USD") goodies, và điều kiện trong hàm sẽ xác định đơn vị cuối cùng (“đồng”, “đô la”).
  • Định dạng số: Nếu số có dấu phẩy, bạn cần biến đổi thành số thực bằng CDbl. Đảm bảo dữ liệu nhập vào không có ký tự đặc biệt.

3.3 Lưu trữ các macro

  • Mở Excel, nhấn Alt + F11 để mở Visual Basic Editor.
  • Chọn Insert > Module, dán mã ở trên.
  • Lưu file dưới dạng Macro-Enabled Workbook (.xlsm) để macro luôn hoạt động trong tương lai.

3.4 Kiểm tra lỗi

  • Chuyển đổi số lớn: Nếu số vượt quá Long (2,147,483,647), sử dụng Double hoặc Currency để lưu trữ, nhưng cần điều chỉnh hàm ConvertNumberToWords để xử lý phần thập phân.
  • Thập phân: Nếu cần chuyển đổi phần thập phân (đúng như “00/100” trong hóa đơn), bạn có thể thêm một đoạn xử lý DecimalPart = num - Int(num) và kết hợp với ConvertNumberToWords.

4. Phương pháp 3: Sử dụng Add-In và Công cụ Bên Thứ Ba

Nếu bạn làm việc trong môi trường doanh nghiệp, có thể cài đặt add-in chuyên dụng để tự động chuyển đổi số thành chữ. Điều này tiết kiệm thời gian vì bạn không cần viết macro.

4.1 Add-In “Number to Words”

  • Tải add-in từ trang chính thức của nhà cung cấp (ví dụ: https://www.numbertowords.com/繁体).
  • Cài đặt vào Excel: File > Options > Add-Ins > Excel Add-ins > Browse.
  • Sau khi cài, một công thức mới sẽ xuất hiện: =NUMBERTOWORDS(A1).

Add-in này thường hỗ trợ nhiều ngôn ngữ, đồng thời có tính năng xử lý lô hàng, số thập phân, và định dạng tài chính.

4.2 Google Sheets và Office Scripts

Tự Nhảy Số Tiền Bằng Chữ Trong Excel
Tự Nhảy Số Tiền Bằng Chữ Trong Excel

Nếu bạn muốn làm việc trên nền tảng đám mây, Google Sheets hỗ trợ hàm GOOGLEFINANCE, nhưng không có hàm chuyển số sang chữ. Tuy nhiên, bạn có thể viết Google Apps Script tương tự VBA:

function NUMBER_TO_WORDS(num) { var units = "không", "một", "hai", ...; var tens = "không", "mười", "hai", ...; // logic tương tự... return result;
}

Sau khi viết, công thức trong ô: =NUMBER_TO_WORDS(A1).

4.3 Công cụ trực tuyến

Nhiều trang web cung cấp dịch vụ chuyển đổi số thành chữ miễn phí, ví dụ: https://vietnamtrans.com/ прием. Bạn chỉ cần sao chép số vào, nhận được kết quả. Tuy nhiên, việc tự động trong Excel vẫn hữu ích hơn đối với koristi.

5. Tối ưu hóa và Lưu trữ

5.1 Đặtნების Vị trí của hàm

Khi viết hàm VBA, bạn nên đặt nó trong một module riêng biệt, tránh trùng lặp tên hàm. Nếu bạn có nhiều hàm, hãy đặt trong thư mục VBAProject.

5.2 Sử dụng Range Object để giảm phép tính

Nếu bạn cần chuyển đổi hàng ngàn ô, hãy dùng .Selection.Value và vòng lặp, tránh gọi hàm quá nhiều lần:

Dim rng As Range, cell As Range
Set rng = Range("A2:A1000")
For Each cell In rng cell.Offset(0, 1).Value = CurrencyToWords(cell.Value)
Next cell

5.3 Xử lý lỗi “#NAME?” hoặc “#REF!”

  • Kiểm tra rằng file được lưu dưới dạng .xlsm.
  • Đảm bảo macro được bật: File > Options > Trust Center > Trust Center Settings > Macro Settings > Enable all macros.
  • Kiểm tra tên hàm chính xác.

6. Mở rộng: Xử lý số lẻ, chữ số thập phân, và tiền tệ quốc tế

6.1 Số lẻ

Nếu bạn muốn chuyển số lẻ, hãy chỉnh hàm NumberToWords sao cho chữ “lẻ” xuất hiện khi có phần trăm không có mười. Ví dụ: 101 → một trăm lẻ một.

6.2 Thập phân

Nếu cần chuyển phần thập phân, bạn có thể chia số ngày theo quy tắc:
– num = 1234.56 → một nghìn hai trăm ba mươi bốn đồng, năm mươi sáu xu.

Cách thực hiện:

Dim intPart As Long, decPart As Long
intPart = Int(num)
decPart = Round((num - intPart) 100, 0)
result = ConvertNumberToWords(intPart) & " đồng, " & ConvertNumberToWords(decPart) & " xu"

6.3 Tiền tệ quốc tế

Hàm CurrencyToWords có thể nhận tham số thứ hai là mã tiền tệ:

Normalizer = CurrencyToWords(A1, "USD")

Trong hàm, thêm logic:

Select Case currencyCode Case "USD": unit = "đô la" Case "EUR": unit = "euro" Case "JPY": unit = "yen" Case Else: unit = "đồng"
End Select

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

LỗiNguyên nhânGiải pháp
#VALUE!Ô chứa ký tự không phải sốKiểm tra dữ liệu, chuyển đổi thành số bằng VALUE()
#NAME?Hàm chưa được định nghĩaĐảm bảo macro đã được lưu, macro được bật
Chữ “bốn” xuất hiện làm “tư”Loại bỏ từ “bốn” khi có số 4 trong phần trămThêm điều kiện trong NumberToWords
Thừa dấu “đồng”Hàm ConvertNumberToWords trả về “đồng” hai lầnKiểm tra Trim價格 và EndsWith
Hiệu năng chậmĐối với 10k+ ôSử dụng vòng lặp For Each hoặc nạp bảng dữ liệu vào Dictionary

8. Ví dụ thực tế – Tạo bảng tính tự động chuyển đổi

Giả sử bạn có bảng tính như sau:

A (Số tiền)B (Số tiền bằng chữ)
1000=CurrencyToWords(A2)
25000=CurrencyToWords(A3)
1234567=CurrencyToWords(A4)

Sau khi nhập công thức, Excel sẽ tự động hiển thị:

A (Số tiền)B (Số tiền bằng chữ)
1000một nghìn đồng
25000hai mươi lăm nghìn đồng
1234567một triệu hai trăm ba mươi bốn nghìn năm trăm sáu mươi bảy đồng

Bạn có thể kéo công thức xuống để áp dụng cho hàng trăm dòng.

9. Kết luận

Việc tự nhảy số tiền bằng chữ trong Excel là một kỹ năng quan trọng, giúp tăng tính chính xác và chuyên nghiệp trong các báo cáo tài chính, hợp đồng, và văn bản kế toán. Dù bạn là người mới bắt đầu hay chuyên gia, các phương pháp dưới đây – từ công thức đơn giản, VBA tùy chỉnh đến add‑in chuyên dụng – đều đáp ứng được nhu cầu của bạn.

  • Nếu bạn không muốn viết macro: Sử dụng công thức lồng nhau hoặc add‑in.
  • Nếu bạn cần tính linh hoạt và mở rộng: Viết hàm VBA CurrencyToWords.
  • Nếu bạn làm việc trong môi trường doanh nghiệp: Tận dụng add‑in, hoặc công cụ trực tuyến.

Nhớ lưu file dưới định dạng xlsm, bật macro và kiểm tra kỹ dữ liệu nhập vào. Sau khi áp dụng, bạn sẽ thấy công việc của mình trở nên nhanh hơn, chính xác hơn và chuyên nghiệp hơn nhiều.

Hãy thử áp dụng ngay cách chuyển đổi số thành chữ trong bảng tính của mình, và chia sẻ trải nghiệm của bạn!

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