Để đổi số thành chữ trong Excel 2019, bạn có thể sử dụng hàm tùy chỉnh (User Defined Function – UDF) bằng cách viết mã VBA (Visual Basic for Applications). Dưới đây là hướng dẫn chi tiết về cách thực hiện điều này:
Tạo hàm VBA để đổi số thành chữ
- Mở Excel 2019.
- Nhấn
Alt + F11
để mở cửa sổ VBA Editor. - Trong VBA Editor, chọn Insert > Module để chèn một module mới.
- Sao chép và dán mã VBA sau vào cửa sổ module:
Function NumberToWords(ByVal MyNumber)
Dim Units As String
Dim SubUnits As String
Dim TempStr As String
Dim DecimalPlace As Integer
Dim Count As Integer
Dim DecimalValue As String
Dim Place(9) As String
Dim Ones(9) As String
Dim Tens(9) As String
Dim SubUnitsPlace(9) As String
Dim SubUnitsOnes(9) As String
Dim SubUnitsTens(9) As String Place(2) = " Thousand "
Place(3) = " Million "
Place(4) = " Billion "
Place(5) = " Trillion "
Ones(1) = "One"
Ones(2) = "Two"
Ones(3) = "Three"
Ones(4) = "Four"
Ones(5) = "Five"
Ones(6) = "Six"
Ones(7) = "Seven"
Ones(8) = "Eight"
Ones(9) = "Nine"
Tens(1) = "Ten"
Tens(2) = "Twenty"
Tens(3) = "Thirty"
Tens(4) = "Forty"
Tens(5) = "Fifty"
Tens(6) = "Sixty"
Tens(7) = "Seventy"
Tens(8) = "Eighty"
Tens(9) = "Ninety"
SubUnitsPlace(2) = " Hundred "
SubUnitsPlace(3) = " Thousand "
SubUnitsPlace(4) = " Million "
SubUnitsPlace(5) = " Billion "
SubUnitsPlace(6) = " Trillion "
SubUnitsOnes(1) = "One"
SubUnitsOnes(2) = "Two"
SubUnitsOnes(3) = "Three"
SubUnitsOnes(4) = "Four"
SubUnitsOnes(5) = "Five"
SubUnitsOnes(6) = "Six"
SubUnitsOnes(7) = "Seven"
SubUnitsOnes(8) = "Eight"
SubUnitsOnes(9) = "Nine"
SubUnitsTens(1) = "Ten"
SubUnitsTens(2) = "Twenty"
SubUnitsTens(3) = "Thirty"
SubUnitsTens(4) = "Forty"
SubUnitsTens(5) = "Fifty"
SubUnitsTens(6) = "Sixty"
SubUnitsTens(7) = "Seventy"
SubUnitsTens(8) = "Eighty"
SubUnitsTens(9) = "Ninety"
MyNumber = Trim(CStr(MyNumber))
DecimalPlace = InStr(MyNumber, ".")
If DecimalPlace > 0 Then
DecimalValue = Mid(MyNumber, DecimalPlace + 1)
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
TempStr = ConvertHundreds(Right(MyNumber, 3))
If TempStr <> "" Then Units = TempStr & Place(Count) & Units
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
NumberToWords = Application.Trim(Units)
End Function
Private Function ConvertHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
If Mid(MyNumber, 1, 1) <> "0" Then
Result = Ones(Mid(MyNumber, 1, 1)) & " Hundred "
End If
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & Tens(Mid(MyNumber, 2, 1)) & " "
Result = Result & Ones(Mid(MyNumber, 3, 1)) & " "
Else
Result = Result & Ones(Mid(MyNumber, 3, 1)) & " "
End If
ConvertHundreds = Result
End Function
- Đóng VBA Editor và quay lại Excel.
Sử dụng hàm tùy chỉnh
Bây giờ bạn có thể sử dụng hàm NumberToWords
trong Excel giống như bất kỳ hàm nào khác. Ví dụ:
- Nếu bạn muốn chuyển đổi số 12345 thành chữ, hãy nhập công thức sau vào ô:excel
=NumberToWords(12345)
Lưu ý:
- Mã trên chuyển đổi số thành chữ tiếng Anh. Nếu bạn cần chuyển đổi sang tiếng Việt, bạn sẽ cần thay đổi các từ trong mảng
Ones
,Tens
, vàPlace
thành từ tương ứng tiếng Việt. - Nếu bạn muốn hỗ trợ số thập phân, bạn cần sửa đổi mã để xử lý phần thập phân (DecimalValue).
Nếu bạn cần mã chuyển đổi số thành chữ tiếng Việt, vui lòng cho biết để mình hỗ trợ thêm.