Em chỉnh lại như sau, mọi người có thể chỉ giúp em thêm dấu phẩy (,) ngăn cách hàng tỷ, triệu, trăm, nghìn:
Function DocSoRaChu(number As String, Optional DonVi As String = "", Optional Le As String = "", Optional Phay As String = "", Optional Hoa As Boolean = True) As String
'Code cua Vu: Dichchu , rat hay
'Code cua Thay giao (qua co): Pham Duy Long
'Van co sai sot o duoi
'http://www.giaiphapexcel.com/forum/showthread.php?65-Hàm-chuy?n-s?-thành-ch?/page6
Dim arNum, arGrp, dInt As String, dau As String, dvInt As String, s123 As String
Dim s1 As String, s2 As String, s3 As String, sNhom As String
Dim nId As Long, n03 As Long, n1 As Long, n2 As Long, n3 As Long
Dim Sole As Byte, nLop As Byte
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))
arGrp = Array(" tr" & ChrW(259) & "m", " tri" & ChrW(7879) & "u", " nghìn", " t" & ChrW(7927), ChrW(226) & "m ", "", "")
On Error GoTo BaoLoi
If 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)
'number = Application.WorksheetFunction.Round(Abs(number), 2)
dau = arGrp(4)
If InStr(1, number, "E") > 0 Then 'so Format 1,23457E+10
number = Replace(Replace(number, ".", ""), ",", "")
dvInt = Mid(number, InStr(1, number, "E") + 1)
number = Mid(number, 1, InStr(1, number, "E") - 1)
number = number & String(dvInt - Len(number) + 1, "0")
End If
End If
dvInt = Int(number)
Sole = (number - dvInt) * 100
n1 = ((Len(str(dvInt)) - 1) Mod 9)
If n1 > 0 Then number = String(9 - (n1 Mod 12), "0") & dvInt
dvInt = String(9 - (((Len(str(dvInt)) - 1) Mod 9) Mod 12), "0") & dvInt
nLop = 1
nId = 1
n03 = 1
For nId = 1 To Len(dvInt) Step 3
s1 =

s2 =

s3 =

sNhom = ""
' If Mid(dvInt, nId, 3) = "000" Then
' If DsNguyen <> "" And nLop = 3 And Len(number) - nId > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
' 's123 = ""
' If dInt <> "" And nId = 7 Then dInt = dInt & arGrp(3)
' '15000: Muoi nam nghin TY
' 'Neu de dong nay:
' 'thi 2000000009000: ket qua dung
' Else
n1 = Mid(dvInt, nId, 1)
n2 = Mid(dvInt, nId + 1, 1)
n3 = Mid(dvInt, nId + 2, 1)
'If Mid(dvInt, nId, 3) = "000" Then
If n1 & n2 & n3 = "000" Then
If DsNguyen <> "" And n03 = 3 And Len(number) - nId > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
'If n03 = 3 And Len(number) - nId > 2 Then s123 = ""
's123 = ""
Else
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 n03 = 3 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 + 1
n03 = n03 + 1
If n03 > 3 Then n03 = 1
DsNguyen = DsNguyen & s123
If nId > Len(number) Then Exit For
Next
If DsNguyen = "" Then DsNguyen = "Kh" & ChrW(244) & "ng" Else DsNguyen = dau & Trim(DsNguyen)
'================
'doc so thap phan
'================
s1 =

s2 = ""
If Sole = 0 Then
If Songuyen > 0 Then s2 = " ch" & ChrW(7859) & "n"
ElseIf Sole < 10 Then
s2 = " ph" & ChrW(7849) & "y" & " không" & arNum(Sole)
Else
If Left(Sole, 1) = "1" And Right(Sole, 1) = "0" Then
s1 = " ph" & ChrW(7849) & "y" & " m" & ChrW(432) & ChrW(7901) & "i"
ElseIf Left(Sole, 1) = "1" And Right(Sole, 1) <> "0" Then
s1 = " ph" & ChrW(7849) & "y" & " m" & ChrW(432) & ChrW(7901) & "i"
ElseIf Left(Sole, 1) <> "1" And Right(Sole, 1) <> "0" Then
's1 = " ph" & ChrW(7849) & "y" & " m" & ChrW(432) & ChrW(7901) & "i"
s1 = " ph" & ChrW(7849) & "y" & arNum(Left(Sole, 1)) & " m" & ChrW(432) & ChrW(417) & "i"
Else
s1 = " ph" & ChrW(7849) & "y" & arNum(Left(Sole, 1)) & " m" & ChrW(432) & ChrW(417) & "i"
End If
If Right(Sole, 1) = "1" And Left(Sole, 1) <> "1" Then
s2 = " m" & ChrW(7889) & "t"
ElseIf Right(Sole, 1) = "5" Then
s2 = " l" & ChrW(259) & "m"
ElseIf Right(Sole, 1) = "0" And Left(Sole, 1) <> "0" Then
's2 = " xu "
s2 = dvTp
Else
s2 = arNum(Right(Sole, 1))
End If
End If
'===============
'Khai bao don vi: d (VND), u (USD), m
'===============
'"B" & ChrW(7843) & "ng Anh"
'"t" & ChrW(7845) & "n"
'"t" & ChrW(7841)
'"y" & ChrW(7871) & "n"
'"cân"
DonVi = LCase(Trim(DonVi))
If DonVi = "" Or DonVi = "d" Then
dvNguyen = " " & ChrW(273) & ChrW(7891) & "ng"
If Right(Sole, 1) = "0" Then
dvTp = ""
Else
dvTp = " xu"
End If
'ElseIf DonVi = "u" Then
' dvNguyen = " " & ChrW(273) & "ô la M" & ChrW(7929)
' If Right(Sole, 1) = "0" Then
' dvTp = ""
' Else
' dvTp = " cent"
' End If
'ElseIf DonVi = "m" Then
' dvNguyen = " mét"
' If Right(Sole, 1) = "0" Then
' dvTp = ""
' Else
' dvTp = " x" & ChrW(259) & "ng ti mét"
' End If
End If
If dInt = "" Then dInt = arNum(0) Else dInt = dau & dInt
If Right(dInt, 1) = arGrp(5) Then dInt = Left(dInt, Len(dInt) - 1)
If Hoa = True Then
DocSoRaChu = UCase(Left(Trim(DsNguyen), 1)) & Mid(DsNguyen, 2, 99) & dvNguyen & s1 & s2 & dvTp
Else
DocSoRaChu = UCase(Left(Trim(DsNguyen), 1)) & Mid(DsNguyen, 2, 99) & dvNguyen & s1 & s2 & dvTp
End If
Exit Function
BaoLoi:
DocSoRaChu = number & " ?"
End Function