cuongdv
Thành viên mới

- Tham gia
- 26/11/08
- Bài viết
- 38
- Được thích
- 6
Trong bài này ở #58 của bác Phamduylong:
Tôi thấy khi đọc số từ hàng nghìn đến hàng chục nghìn mà cuối số đó có 3 số 0 thì sẽ đọc thành tỷ
vd: =docso(4000) : Bốn ngàn tỷ
=docso(41257000): Bốn mươi mốt triệu hai trăm năm mươi bảy ngàn tỷ
Nhờ các cao thủ xem và giải thích.
Mã:
[URL]http://www.giaiphapexcel.com/forum/showthread.php?65-H%C3%A0m-chuy%E1%BB%83n-s%E1%BB%91-th%C3%A0nh-ch%E1%BB%AF[/URL]
Mã:
[LEFT][COLOR=#000000]Function DocSo(Number As String, Optional DonVi As String = "", Optional Le As String = "", Optional Phay As String = "", Optional Hoa As Boolean = True) As String[/COLOR][/LEFT]
Dim arNum, arGrp, dInt As String, dau As String, dvInt As String, s123 As StringDim s1 As String, s2 As String, s3 As String, sNhom As StringDim nId As Long, n03 As Long, n1 As Long, n2 As Long, n3 As Long[COLOR=blue]arNum = 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", " m" & ChrW(432) & ChrW(7901) & "i", " m" & ChrW(432) & ChrW(417) & "i", " m" & ChrW(7889) & "t", " l" & ChrW(7867), " b" & ChrW(7889) & "n", " l" & ChrW(259) & "m", " ch" & ChrW(7859) & "n", " không", ",", " l" & ChrW(7867))[/COLOR][COLOR=blue]arGrp = Array(" tr" & ChrW(259) & "m", " tri" & ChrW(7879) & "u", " ngàn", " t" & ChrW(7927), " âm", "", "")[/COLOR]On Error GoTo baoloiIf Phay <> "" Then arGrp(5) = Trim(Phay)If DonVi <> "" Then arGrp(6) = " " & Trim(DonVi)If Le <> "" Then arNum(13) = " " & Trim(Le)If Number < 0 Then Number = Abs(Number) dau = arGrp(4)End IfdvInt = Int(Number)n1 = ((Len(Str(dvInt)) - 1) Mod 9)dvInt = String(9 - (((Len(Str(dvInt)) - 1) Mod 9) Mod 12), "0") & dvIntn03 = 1For nId = 1 To Len(dvInt) Step 3 s1 = "": s2 = "": s3 = "": sNhom = "" If Mid(dvInt, nId, 3) = "000" Then s123 = "" [COLOR=red]If dInt <> "" And nId = 7 Then dInt = dInt & arGrp(3)[/COLOR] Else n1 = Mid(dvInt, nId, 1) n2 = Mid(dvInt, nId + 1, 1) n3 = Mid(dvInt, nId + 2, 1) If n1 = 0 And dInt <> "" Then s1 = arNum(0) & arGrp(0) If n1 > 0 Then s1 = arNum(n1) & arGrp(0) If n2 = 0 And (s1 = "" Or n3 = 0) Then s2 = "" If n2 = 0 And s1 <> "" And n3 > 0 Then s2 = arNum(13) If n2 = 1 Then s2 = arNum(10) If n2 > 1 Then s2 = arNum(n2) & arNum(11) If n3 = 1 And n2 <= 1 Then s3 = arNum(1) If n3 = 1 And n2 > 1 Then s3 = arNum(12) If n3 = 5 And n2 = 0 Then s3 = arNum(5) If n3 = 5 And n2 <> 0 Then s3 = arNum(15) If s3 = "" And n3 > 0 Then s3 = arNum(n3) s123 = s1 & s2 & s3 If n03 = 3 And (dInt <> "" Or s123 <> "") And Len(dvInt) - nId > 9 Then sNhom = arGrp(3) If sNhom = "" And n03 < 3 Then sNhom = arGrp(n03) s123 = s123 & sNhom dInt = dInt & s123 & arGrp(5) End If If n03 = 3 Then n03 = 1 Else n03 = n03 + 1NextIf dInt = "" Then dInt = arNum(0) Else dInt = dau & dIntIf Right(dInt, 1) = arGrp(5) Then dInt = Left(dInt, Len(dInt) - 1)If Hoa = True Then DocSo = UCase(Left(Trim(dInt), 1)) & Mid(Trim(dInt) & arGrp(6), 2)Else DocSo = Trim(dInt) & arGrp(6)End IfExit Functionbaoloi:DocSo = Number & " ?" [LEFT][COLOR=#000000]End Function[/COLOR][/LEFT]
vd: =docso(4000) : Bốn ngàn tỷ
=docso(41257000): Bốn mươi mốt triệu hai trăm năm mươi bảy ngàn tỷ
Nhờ các cao thủ xem và giải thích.
