Hàm Vnd Đổi Số Ra Chữ Trong Excel

Trong công việc quản lý tài chính, lập báo cáo, lập bảng kê và xử lý dữ liệu tài chính, việc chuyển đổi số thành chữ là một thao tác phổ biến. Đối với người Việt Nam, đặc biệt là trong các tài liệu kế toán, hợp đồng, hay hóa đơn, việc viết số thành chữ theo quy tắc tiếng Việt (có thể bao gồm chữ “đồng” hay “đồng chẵn”) rất quan trọng để tránh nhầm lẫn, tranh chấp và làm tăng tính chuyên nghiệp của tài liệu.

Excel, với tính năng linh hoạt và mạnh mẽ, luôn là công cụ được nhiều người dùng tin dùng để thực hiện các tác vụ tính toán. Tuy nhiên, mặc dù Excel cung cấp rất nhiều hàm dữ liệu, hàm chuyển đổi số thành chữ không có sẵn. Để giải quyết vấn đề này, chúng ta có thể tự xây dựng hàm tùy chỉnh bằng VBA (Visual Basic for Applications) hoặc tìm các hàm đã được viết sẵn từ cộng đồng.

Bài viết này sẽ hướng dẫn chi tiết cách tạo hàm VND trong Excel để chuyển số thành chữ tiếng Việt, các cách tùy chỉnh, cách mở rộng, cách tối ưu hoá, và những lưu ý khi áp dụng trong thực tế.

1. Tại sao cần hàm VND đổi số ra chữ trong Excel?

1.1. Đối tượng sử dụng

  • Nhân viên kế toán và tài chính: Viết số thành chữ trong báo cáo, bảng kê, hợp đồng, hóa đơn.
  • Nhà quản trị dữ liệu: Kiểm tra tính hợp lệ của dữ liệu số, chuyển đổi số thành chuỗi chữ để hiển thị trong report.
  • Nhà phát triển phần mềm: Tích hợp tính năng trong các ứng dụng doanh nghiệp, ERP, hoặc các add-in cho Excel.

1.2. Lợi ích、不được

  1. Tránh sai sót: Khi viết số bằng tay, dễ nhầm lẫn giữa các chữ số, đặc biệt trong số lớn. Hàm tự động giúp tránh lỗi.
  2. Tiết kiệm thời gian: Thay vì làm thủ công hoặc sử dụng công cụ pils, hàm cho phép chuyển đổi nhanh chóng ngay trong ô tính.
  3. Tính nhất quán: Định dạng chữ viết nhất quán, tuân thủ quy tắc ngôn ngữ và chuẩn kế toán.
  4. Tích hợp dữ liệu: Dữ liệu có thể được xuất ra PDF, Word, 易乐 vào tài liệu báo cáo.

2. Cấu trúc cơ bản của số thành chữ tiếng Việt

Trước khi viết hàm, chúng ta cần hiểu ngữ pháp và cấu trúc của cách viết số bằng chữ:

  • Các số từ 0-9:
  • 0: không, không có, (trong số có chữ số cuối là 0, thường không ghi).
  • 1: một
  • 2: hai
  • 3: ba
  • 4: bốn
  • 5: năm
  • 6: sáu
  • 7: bảy
  • 8: tám
  • 9: chín

  • Các nhóm số (từ 10-99):

  • 10: mười
  • 11: mười một
  • 12: mười hai
  • 21: hai mươi mốt
  • 25: hai mươi lăm
  • 35: ba mươi lăm
    cuối cùng, có quy tắc “lăm” và “mốt” thay đổi khi đứng cuối nhóm.

  • Các lớp số:

  • 100: một trăm
  • 1000: một nghìn
  • 1,000,000: một triệu
  • 1,000,000,000: một tỷ

  • Chữ “đồng”: Thêm vào sau số khi viết tiền tệ.

  • Chữ “đồng chẵn”: Được thêm khi số là số nguyên, thường trong hóa đơn, để tránh trốn thuế.

3. Các phương pháp chuyển đổi

Có nhiều cách để thực hiện chuyển đổi số thành chữ trong Excel. Chúng ta sẽ phân loại theo hai nhóm chính:

  1. Sử dụng hàm VBA tùy chỉnhcolumns
  2. Sử dụng công thức phức tạp (array formulas) trong //
    Excel

3.1. Phương pháp 1: Hàm VBA

3.1.1. Ưu điểm

  • Dễ dàng mở rộng: Có thể tự định nghĩa quy tắc, thêm các từ ngữ đặc biệt.
  • Hiệu suất tốt: VBA chạy nhanh, đặc biệt khi xử lý hàng triệu dòng.
  • Đơn giản khi sử dụng: Gọi hàm giống với bất kỳ hàm nội bộ nào.

3.1.2. Cài đặt

  1. Mở trình soạn thảo VBA
  2. Nhấn Alt + F11 trong Excel.
  3. Chọn Insert > Module để tạo module mới.

  4. Dán mã VBA

  5. Dưới đây là một phiên bản cơ bản, có thể tùy chỉnh thêm.
Option Explicit ' Hàm chính: chuyển số thành chữ VND
Public Function VND(ByVal Number As Variant, Optional ByVal WithCurrency As Boolean = True, Optional ByVal IsIntegerOnly As Boolean = True) As String Dim strResult As String If IsNumeric(Number) = False Then VND = "Không phải số" Exit Function End If ' Số âm If Number < 0 Then VND = "Âm " & VND(Abs(Number), WithCurrency, IsIntegerOnly) Exit Function End If ' Kiểm tra số lớn If Number > 9999999999999999# Then VND = "Số quá lớn" Exit Function End If strResult = ConvertNumberToVietnamese(Number) If WithCurrency Then If IsIntegerOnly And Number = Int(Number) Then strResult = strResult & " đồng chẵn" Else strResult = strResult & " đồng" End If End If VND = strResult
End Function ' Hàm nội bộ chuyển số thành chữ tiếng Việt
Private Function ConvertNumberToVietnamese(ByVal Number As Double) As String Dim Units() As String Units = Array("", "nghìn", "triệu", "tỷ", "nghìn tỷ", "triệu tỷ", "tỷ tỷ") Dim i As Long Dim n As Long Dim part As String Dim result As String result = "" i = 0 Do While Number > 0 n = Number Mod 1000 Number = Number \ 1000 If n > 0 Then part = ConvertThreeDigits(n) If Units(i) <> "" Then part = part & " " & Units(i) If result <> "" Then result = part & " " & result Else result = part End If End If i = i + 1 Loop ConvertNumberToVietnamese = result
End Function ' Hàm chuyển 3 chữ số thành chữ
Private Function ConvertThreeDigits(ByVal Number As Long) As String Dim Units() As String Units = Array("không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín") Dim hundred As Long, ten As Long, unit As Long Dim result As String hundred = Number \ 100 ten = (Number Mod 100) \ 10 unit = Number Mod 10 result = "" ' Trăm If hundred > 0 Then result = Units(hundred) & " trăm" End If ' Chữ số hàng chục If ten > 1 Then If result <> "" Then result = result & " " result = result & Units(ten) & " mươi" ElseIf ten = 1 Then If result <> "" Then result = result & " " result = result & "mười" End If ' Chữ số hàng đơn vị If unit > 0 Then If ten = 0 And hundred = 0 Then result = result & " " & Units(unit) Else Select Case unit Case 1 result = result & " mốt" Case 5 result = result & " lăm" Case Else result = result & " " & Units(unit) End Select End If Else ' Khi hàng đơn vị là 0, không ghi gì End If ConvertThreeDigits = result
End Function
  1. Lưu và đóng VBA
  2. Lưu file Excel dưới dạng .xlsm (Excel Macro-Enabled Workbook).

  3. Sử

  4. Trong ô Excel, nhập công thức:
    =VND(A1)
  5. Nếu bạn muốn không thêm “đồng”:
    =VND(A1, FALSE)
  6. Nếu muốn “đồng chẵn” cho số nguyên:
    =VND(A1, TRUE, TRUE)

3.1.3. Tùy chỉnh

  • Thêm biến “đồng chẵn”: Hàm đã hỗ trợ.
  • Chỉnh sửa quy tắc “mốt” và “lăm”: Thay đổi trong Select Case unit.
  • Thêm từ “không”: Đã có, nhưng có thể bỏ qua nếu không cần.
  • Chèn “đồng”: Thêm trong hàm VND.

3.1.4. Lưu ý

  • Macro phải được bật: Khi mở workbook, Excel sẽ hỏi bật macro.
  • Bảo mật: Đối với file chia sẻ, macro có thể gây rủi ro bảo mật.
  • Độ dài số: Hàm giới hạn tới 15 chữ số (≈ 10^15). Nếu số lớn hơn, cần điều chỉnh.

3.2. Phương pháp 2: Công thức công thức

Nếu bạn không muốn sử dụng VBA hoặc làm việc trong môi trường không hỗ trợ macro, bạn có thể tạo một công thức phức tạp. Tuy nhiên, phương pháp này thường dài, khó bảo trì và ít linh hoạt.

3.2.1. Phương pháp “SPLIT + IF” (Excel 365)

  1. Tách số thành từng chữ số
  2. Dùng MID, LEN, IFERROR để lấy từng ký tự.
  3. Xác định nhóm (nghìn, triệu, tỷ).
  4. Sử dụng CHOOSE để chuyển đổi từng chữ số thành từ.
  5. Kết hợp bằng TEXTJOIN.

Mặc dù có thể thực hiện, công thức này thường dài hơn 200 ký tự và khó đọc.

3.2.2. Phương pháp “Array formula” (Excel < 365)

  • Sử dụng INDEX, SMALL, ROWS, COLUMNS, OFFSET.
  • Mặc dù hiệu năng tốt hơn, nhưng vẫn phức tạp.

Khuyến nghị: Sử dụng VBA nếu có thể. Nếu không, có thể tìm kiếm add-in hoặc macro đã được phát hành từ cộng đồng.

4. Ví dụ thực tế

Hàm Vnd Đổi Số Ra Chữ Trong Excel
Hàm Vnd Đổi Số Ra Chữ Trong Excel

4.1. Chuyển đổi số thành chữ đơn giản

SốCông thứcKết quả
123=VND(123)một trăm hai mươi ba đồng
5000=VND(5000)năm nghìn đồng
1000000 日本一本道=VND(1000000)một triệu đồng
130000000=VND(130000000)một trăm ba mươi triệu đồng
123456789=VND(123456789)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

4.2. Chuyển đổi số có chữ “đồng chẵn”

SốCông thứcKết quả
5000=VND(5000, TRUE, TRUE)năm nghìn đồng chẵn
123456=VND(123456, TRUE, TRUE)một trăm hai mươi ba nghìn bốn trăm năm mươi sáu đồng chẵn

4.3. Số âm

SốCông thứcKết quả
-123=VND(-123)Âm một trăm hai mươi ba đồng

4.4. Số lớn hơn 10^15

SốCông thứcKết quả
987654321012345=VND(987654321012345)chín trăm tám mươi bảy nghìn sáu trăm năm mươi bốn triệu ba trăm hai mươi mười nghìn một trăm hai mươi ba nghìn bốn trăm năm mươi lăm đồng

Lưu ý: Khi số lớn, độ dài chuỗi có thể vượt quá giới hạn Excel (32767 ký tự).

5. Tối ưu hoá và mở rộng

5.1. Tối ưu hoá hiệu suất

  • Sử dụng Static để lưu lại mảngҿка:
    vba Static Units() As String If IsEmpty(Units) Then Units = Array("", "nghìn", "triệu", "tỷ", ...) End If
  • Tránh gọi ConvertThreeDigits lặp lại:
  • Tối ưu bằng cách cài đặt Cache cho từng giá trị 0-999.

5.2. Mở rộng tính năng

  1. Chỉnh sửa quy tắc “mốt” / “lăm”
  2. Thêm tham số WithSpecialRules As Boolean = True.
  3. Định dạng số thập phân
  4. Khi số có phần thập phân, chuyển thành “đồng” + “điểm” + “chữ thập phân”.
  5. Hỗ trợ tiền tệ khác
  6. Thêm tham số صلحة để chỉ định loại tiền tệ (USD, EUR).
  7. Tạo hàm “VNDCurrency”
  8. Tự động thêm “đồng chẵn” nếu số nguyên.

5.3. Kiểm thử

  • Kiểm thử đơn vị: Viết macro Unit Test, kiểm tra đầu vào 0, 1, 10, 11, 20, Def, 100, 1000, 1000000ologisch.
  • Kiểm thử giới hạn: Kiểm tra số 0 và 10^15.
  • Kiểm thử tính số nguyên: Kiểm tra IsIntegerOnly.

6. Lưu ý khi triển khai trong môi trường doanh nghiệp

Yếu tốLưu ý
Bảo mật macroTài liệu chia sẻ nên được bảo mật, macro có thể bị chặn.
Quy định pháp lýKhi viết hợp đồng, cần tuân thủ quy định остальных.
Định dạng sốTránh nhập số dưới dạng văn bản, hãy dùng Number để tránh lỗi.
Số tiền có dấu thập phânKhi số có phần thập phân, nhiều doanh nghiệp vẫn viết “đồng” + “điểm” + chữ.
Thang đoĐối với số lớn (trên tỷ), hãy kiểm tra độ chính xác.
Tải macroNếu chia sẻ file, hãy cung cấp hướng dẫn bật macro.
Sử dụng add-inCó thể tìm add-in “VND Converter” miễn phí hoặc trả phí.
Phân côngĐặt người chịu trách nhiệm kiểm tra nội dung.

7. Tham khảo tài liệu và nguồn mở

  • GitHub: Tìm các repository “vnd-words-in-excel” hoặc “excel-number-to-words-vn”.
  • Stack Overflow: Câu hỏi “Excel number to Vietnamese words”.
  • Microsoft Office VBA Reference: Hướng dẫn cấu trúc hàm, cách lưu trữ mảng, tối ưu.
  • Bài viết blog: “Chuyển số thành chữ trong Excel – VBA”.

8. Kết luận

Việc chuyển đổi số thành chữ trong Excel là một nhu cầu thiết thực trong nhiều lĩnh vực, đặc biệt là trong kế toán và tài chính. Bằng cách tự viết hàm VBA tùy chỉnh, chúng ta có thể dễ dàng thực hiện chuyển đổi, đồng thời linh hoạt mở rộng tính năng, tối ưu hiệu suất và tuân thủ quy tắc ngôn ngữ.
Mặc dù có thể thực hiện bằng công thức phức tạp, nhưng phương pháp VBA cung cấp sự đ მდებ và tính mở rộng tốt hơn.

Những bước thực hiện đã được trình bày chi tiết, từ cách cài đặt, viết mã, tùy chỉnh, kiểm thửchildren, đến triển khai trong môi trường doanh nghiệp. Hy vọng bài viết này giúp bạn có thể nhanh chóng triển khai hàm VND trong Excel và nâng cao tính chuyên nghiệp trong công việc.

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