Cách đọc đúng của đồng USD bằng tiếng việt:

Chia sẻ bởi:hands
★★★★★
Quảng cáo

– 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

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
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
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm