Cách đọc đúng của đồng USD bằng tiếng việt:
– VD: 123,50 USD thì đọc cách nào dưới đây thì đúng
1. Một trăm hai mươi ba Đô la Mỹ và năm mươi Cent
2. Một trăm hai mươi ba Đô la Mỹ và năm Cent
– Mình có cài phần mềm acchelper để chuyển đổi số thành chữ. Nhưng khi mình tắt đi vào lại là p cài lại từ đầu. Mình đang dùng excel2010. Còn excel 2013 thì k bị
Function DocSoTien(ByVal SoTien As Double, Dong As String, Xu As String) As String
Dim Nguyen As Double, Le As Long
SoTien = Round(SoTien, 2)
Nguyen = Int(SoTien)
Le = (SoTien - Nguyen) * 100
DocSoTien = DocSo(Nguyen) & " " & Dong
If Le <> 0 Then
DocSoTien = DocSoTien & " v" & ChrW(224) & " " & DocSo(Le) & " " & Xu
End If
Mid(DocSoTien, 1, 1) = UCase(Mid(DocSoTien, 1, 1))
End Function
Private Function DocSo(ByVal SoTien As Double) As String
Dim MyArray As Variant
Dim Str As String
Str = Format(Abs(SoTien), "000000000000000000")
MyArray = Array("không ", "m" & ChrW(7897) & "t ", "hai ", "ba ", "b" & ChrW(7889) & "n ", "n" & ChrW(259) & "m ", "sáu ", "b" & ChrW(7843) & "y ", "tám ", "chín ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "t" & ChrW(7927) & ", ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "", "tr" & ChrW(259) & "m ", "m" & ChrW(432) & ChrW(417) & "i ", "không " & "m" & ChrW(432) & ChrW(417) & "i" & " không ", "không " & "m" & ChrW(432) & ChrW(417) & "i", "l" & ChrW(7867), "m" & ChrW(432) & ChrW(417) & "i" & " không", "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " n" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i" & " l" & ChrW(259) & "m", "m" & ChrW(7897) & "t " & "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(7901) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7897) & "t", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7889) & "t", "Âm ")
If Str = "000000000000000000" Then
DocSo = UCase(Left(MyArray(0), 1)) & Trim(Mid(MyArray(0), 2)) & "."
Exit Function
End If
For i = 1 To Len(Str)
If Left(Str, i) <> 0 And Mid(Str, (Int((i + 2) / 3) - 1) * 3 + 1, 3) <> 0 Then
DocSo = DocSo & MyArray(Mid(Str, i, 1)) & MyArray(-(9 + i / 3) * (i Mod 3 = 0) - (15 + i Mod 3) * (i Mod 3 <> 0))
ElseIf i = 9 And Mid(Str, 7, 3) = 0 And Left(Str, 6) <> 0 Then
DocSo = DocSo & MyArray(12)
End If
Next
DocSo = Trim(Replace(Replace(Replace(Replace(Replace(Replace(DocSo, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)))
If SoTien < 0 Then
DocSo = MyArray(29) & DocSo
End If
DocSo = Replace(Replace(DocSo & ".", ",.", "."), ".", "")
End Function
Đọc "Một ngàn, tỷ" thì đúng là sai, code bên dưới đã sửa lại. Còn trường hợp kia tôi nghĩ là đọc như code là đúng, cái này còn tùy từng người nữa.
18003
Function DocSoTien(ByVal SoTien As Double, Dong As String, Xu As String) As String
Dim Nguyen As Double, Le As Long
SoTien = Round(SoTien, 2)
Nguyen = Int(SoTien)
Le = (SoTien - Nguyen) * 100
DocSoTien = DocSo(Nguyen) & " " & Dong
If Le <> 0 Then
DocSoTien = DocSoTien & " v" & ChrW(224) & " " & DocSo(Le) & " " & Xu
End If
Mid(DocSoTien, 1, 1) = UCase(Mid(DocSoTien, 1, 1))
End Function
Private Function DocSo(ByVal SoTien As Double) As String
Dim MyArray As Variant
Dim Str As String
Str = Format(Abs(SoTien), "000000000000000000")
MyArray = Array("không ", "m" & ChrW(7897) & "t ", "hai ", "ba ", "b" & ChrW(7889) & "n ", "n" & ChrW(259) & "m ", "sáu ", "b" & ChrW(7843) & "y ", "tám ", "chín ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "t" & ChrW(7927) & ", ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "", "tr" & ChrW(259) & "m ", "m" & ChrW(432) & ChrW(417) & "i ", "không " & "m" & ChrW(432) & ChrW(417) & "i" & " không ", "không " & "m" & ChrW(432) & ChrW(417) & "i", "l" & ChrW(7867), "m" & ChrW(432) & ChrW(417) & "i" & " không", "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " n" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i" & " l" & ChrW(259) & "m", "m" & ChrW(7897) & "t " & "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(7901) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7897) & "t", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7889) & "t", "Âm ")
If Str = "000000000000000000" Then
DocSo = MyArray(0)
Exit Function
End If
For i = 1 To Len(Str)
If Left(Str, i) <> 0 And Mid(Str, (Int((i + 2) / 3) - 1) * 3 + 1, 3) <> 0 Then
DocSo = DocSo & MyArray(Mid(Str, i, 1)) & MyArray(-(9 + i / 3) * (i Mod 3 = 0) - (15 + i Mod 3) * (i Mod 3 <> 0))
ElseIf i = 9 And Mid(Str, 7, 3) = 0 And Left(Str, 6) <> 0 Then
DocSo = DocSo & MyArray(12)
End If
Next
DocSo = Replace(DocSo, ", " & MyArray(12), " " & MyArray(12))
DocSo = Trim(Replace(Replace(Replace(Replace(Replace(Replace(DocSo, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)))
If SoTien < 0 Then
DocSo = MyArray(29) & DocSo
End If
DocSo = Replace(Replace(DocSo & ".", ",.", "."), ".", "")
End Function
Tham khảo:
Function ReadNumber(Num As Double) As Variant
Dim Arr1 As Variant, Arr2 As Variant, Arr3 As Variant, sStr As String, lG As Long, lN As Long, i As Long, k As Long
Arr1 = Array(" zero", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen")
Arr2 = Array("", "", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety")
Arr3 = Array("", " thousand,", " million,", " billion,", " trillion,")
If Abs(Num) >= 10 ^ 15 Then
ReadNumber = CVErr(xlErrNum)
Else
sStr = "00" & Replace(LTrim(Replace(Format(Abs(Num), "000000000000000"), "0", " ")), " ", "0")
For i = Len(sStr) - 2 To 1 Step -3
lG = CLng(Mid(sStr, i, 3))
If lG > 0 Then
ReadNumber = Arr3(k) & ReadNumber
lN = lG Mod 100
If lN >= 20 Then
ReadNumber = Replace(Arr2(lN 10) & Arr1(lN Mod 10), Arr1(0), "") & ReadNumber
ElseIf lN > 0 Then
ReadNumber = Arr1(lN) & ReadNumber
End If
If i > 2 Then ReadNumber = Arr1(lG 100) & " hundred" & IIf(lN > 0, " and", "") & ReadNumber
End If
k = k + 1
Next
ReadNumber = Trim(ReadNumber)
ReadNumber = Replace(ReadNumber & ".", ",.", ".")
If Num < 0 Then ReadNumber = "Negative " & ReadNumber
Mid(ReadNumber, 1, 1) = UCase(Mid(ReadNumber, 1, 1))
End If
End Function
18004
Khóa học SprinGO phù hợp
Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...
Xem khóa học
Bình luận