Hàm chuyển số thành chữ

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Đã có rất nhiều hàm chuyển số thành chữ trên các diễn đàn, nhưng hôm nay, tôi xin giới thiệu với các bạn hàm chuyển số thành chữ hoàn chỉnh nhất của Paulsteigel trên diễn đàn Webketoan
Mã:
Option Explicit
'
Function CountValue(ByVal Target As Range, ByVal Criteria As Long, ByVal isGreater As Boolean) As Variant
Dim i As Long, j As Long
Dim k As Long
With Target
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
If Not IsEmpty(.Cells(i, j)) Then
If isGreater Then
If Val(.Cells(i, j)) >= Criteria Then k = k + 1
Else
If Val(.Cells(i, j)) <= Criteria Then k = k + 1
End If
End If
Next
Next
End With
CountValue = k + 1
End Function
 
 
Public Function NumtoWordExl(ByVal Target As Range, Optional IsToUnicode As Boolean = False) As String
Dim iStr As String, i As Long
Dim retVal As String
If isBigRange(Target) Then
NumtoWordExl = ""
GoTo tExitFunction
End If
' this is a trick to keep excel doesnt set the value to somewhat like 1.22e12+19
iStr = Format(Target.Value, "#000")
retVal = NumtoWord(iStr)
' Now we have to convert the result to unicode if neccessary
If retVal <> "" And IsToUnicode Then retVal = ToUnicode(retVal)
NumtoWordExl = retVal
tExitFunction:
End Function
 
Function NumtoWord(InTxt As String) As String
' Concert any length number to word
' The mentor is: break a number to 9 characters length and do the conversion
' for the rest .... increment the billion counter
' the main function for the conversion is at anywhere in the net and I took this one from anonimity
' My onwed function work similarly - but i failed in searching for it - it dumbed...
' so take this one in replacement
Dim i As Integer, j As Integer
Dim OutString As String
Dim ProcArr() As String
ReDim ProcArr(10)
While Len(InTxt) > 9
' break the input string to group of 9 digit
ProcArr(i) = Right(InTxt, 9)
InTxt = Left(InTxt, Len(InTxt) - 9)
i = i + 1
Wend
ProcArr(i) = InTxt
ReDim Preserve ProcArr(i)
' Now convert the group to value
i = UBound(ProcArr)
While i > 0
' add with "w" as billion word...
OutString = OutString & IIf(Val(ProcArr(i)) > 0, ReadBilGroup(ProcArr(i)) & String(i, "w"), "")
i = i - 1
Wend
OutString = Replace(OutString, "w", " tû") & ReadBilGroup(ProcArr(0))
NumtoWord = Trim(OutString)
End Function
 
Private Function ReadBilGroup(s As String) As String
Dim l As Integer, i As Integer, j As Integer
Dim dk As Boolean
Dim A(11) As Integer
Dim C As String
 
' Variant array to quick convert the number to word
Dim iArr As Variant
iArr = Array("kh«ng", "mét", "hai", "ba", "bèn", "n¨m", "s¸u", "b¶y", "t¸m", "chÝn")
 
C = ""
l = Len(s)
 
' break number to single string
For i = 1 To l
A(i) = CInt(Mid(s, i, 1))
Next i
 
For i = 1 To l '
 
Select Case A(i)
Case 1:
If (i > 1 And (l - i + 1) Mod 3 = 1 And A(i - 1) > 1) Then
C = C & " mèt"
ElseIf ((l - i + 1) Mod 3 <> 2 And A(i) = 1) Then
C = C & " mét"
End If
Case 5:
If (i > 0 And (l - i + 1) Mod 3 = 1 And A(i - 1) <> 0) Then
C = C & " l¨m"
Else
C = C & " n¨m"
End If
Case 0:
If (l - i + 1) Mod 3 = 0 And (A(i + 1) <> 0 Or A(i + 2) <> 0) Then C = C & " kh«ng"
If (l - i + 1) Mod 3 = 2 And A(i + 1) <> 0 Then C = C & " linh"
Case Else
If i = l And A(i) = 4 Then
C = C & " t&shy;"
Else
C = C & " " & iArr(A(i))
End If
End Select
 
If ((l - i + 1) Mod 3 = 2 And A(i) <> 0 And A(i) <> 1) Then
C = C & " m&shy;¬i"
ElseIf ((l - i + 1) Mod 3 = 2 And A(i) <> 0) Then
C = C & " m&shy;êi"
End If
 
If ((l - i + 1) Mod 3 = 0 And (A(i + 1) <> 0 Or A(i + 2) <> 0)) Then
C = C & " tr¨m"
ElseIf (l - i + 1) Mod 3 = 0 And A(i) <> 0 Then
C = C & " tr¨m"
End If
 
If ((l - i + 1) = 4) Then C = C & " ngµn"
If ((l - i + 1) = 7) Then C = C & " triÖu"
 
If ((l - i + 1) Mod 3 = 0 And A(i) = 0 And A(i + 1) = 0 And A(i + 2) = 0) Then i = i + 2
 
If ((l - i + 1) Mod 3 = 1) Then
dk = True
For j = i To l
If A(j) <> 0 Then dk = False
Next j
End If
If dk Then Exit For
Next i
ReadBilGroup = C
End Function
 
 
Private Function isBigRange(ByVal Target As Range) As Boolean
On Error GoTo ErrHandler
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then isBigRange = True
ErrHandler:
End Function
Function ToUnicode(txtString As String, Optional isReversed As Boolean = False) As String
' This function will do the conversion of text string into unicode
Dim iStr As String, repTxt As String, mText As String
Dim i As Long, j As Long
Dim iUnicode As Variant ' array to keep unicode char set
Dim iTCVN As Variant ' array to keep TCVN char set
Dim iProcList() As String ' array to keep what to convert
 
'parse the parameter into this local variable
iStr = txtString
mText = txtString
 
iUnicode = Array(225, 224, 7843, 227, 7841, 259, 7855, 7857, 7859, 7861, 7863, 226, _
7845, 7847, 7849, 7851, 7853, 233, 232, 7867, 7869, 7865, 234, 7871, 7873, 7875, _
7877, 7879, 237, 236, 7881, 297, 7883, 243, 242, 7887, 245, 7885, 244, 7889, 7891, _
7893, 7895, 7897, 417, 7899, 7901, 7903, 7905, 7907, 250, 249, 7911, 361, 7909, _
432, 7913, 7915, 7917, 7919, 7921, 253, 7923, 7927, 7929, 7925, 273, 193, 192, 195, _
258, 194, 212, 416, 431, 272)
 
iTCVN = Array(184, 181, 182, 183, 185, 168, 190, 187, 188, 189, 198, 169, 202, 199, 200, _
201, 203, 208, 204, 206, 207, 209, 170, 213, 210, 211, 212, 214, 221, 215, 216, 220, _
222, 227, 223, 225, 226, 228, 171, 232, 229, 230, 231, 233, 172, 237, 234, 235, 236, _
238, 243, 239, 241, 242, 244, 173, 248, 245, 246, 247, 249, 253, 250, 251, 252, 254, _
174, 193, 192, 195, 161, 162, 164, 165, 166, 167)
 
' Reenlarge the array
ReDim iProcList(1, 133)
' process the vowel only and covert to asc code
For i = 1 To Len(mText)
repTxt = Mid(mText, i, 1)
If AscW(repTxt) > 122 Then
iStr = Replace(iStr, repTxt, "[" & AscW(repTxt) & "]")
mText = Replace(mText, repTxt, " ")
' write the processed list
iProcList(1, j) = "[" & AscW(repTxt) & "]"
If isReversed Then
iProcList(0, j) = GetElementNo(AscW(repTxt), iUnicode)
Else
iProcList(0, j) = GetElementNo(AscW(repTxt), iTCVN)
End If
j = j + 1
End If
Next
If j = 0 Then
ToUnicode = txtString
Exit Function
End If
ReDim Preserve iProcList(1, j - 1)
' now convert to unicode
For i = 0 To UBound(iProcList, 2)
If isReversed Then
iStr = Replace(iStr, iProcList(1, i), ChrW(iTCVN(Val(iProcList(0, i)))))
Else
iStr = Replace(iStr, iProcList(1, i), ChrW(iUnicode(Val(iProcList(0, i)))))
End If
Next
fExit:
ToUnicode = iStr
End Function
 
Thưa Thầy, hình như tham số Hoa ngầm định là viết hoa đầu câu chứ ? Chỉ khi nào không muốn viết hoa đầu câu thì gõ số 0 vào chỗ đó ?
Tham số Hoa ngầm định là viết hoa đầu câu đúng như BNTT đã phát hiện. Đã chỉnh lại bài 58
 
Lần chỉnh sửa cuối:
Upvote 0
Em đã làm các bước như trên. Nhưng lúc làm vẫn "ok"
Vần đề là em Off chương trình Exel, rồi mở lại dùng lại lệnh kô đc, mà TV mới nên còn nhiều cái chưa rõ mong các Bác hướng dẫn giúp. Thân ./.
 
Lần chỉnh sửa cuối:
Upvote 0
mong thầy chỉ bảo thêm

Tôi đã viết lại hàm đọc số, hàm viết ngắn gọn hơn. Tất cả các chuỗi tiếng Việt đều đưa vào 2 mảng arNumarGrp, nếu có thay đổi cách đọc như ngàn/nghìn, bốn/, ... các bạn có thể thay đổi trong mảng là được.
Mỗi người dùng có yêu cầu khác nhau. Muốn hàm đáp ứng được các yêu cầu riêng, tôi bổ sung thêm 4 tham số để tùy chọn đơn vị, cách đọc linh lẻ, dấu tách nhóm, cách viết hoa.

Function DocSo(Number, DonVi, Le, Phay, Hoa)
Ý nghĩa các tham số:
Number: bắt buộc nhập, là số hoặc chuỗi có dạng số.
DonVi: không bắt buộc. Ngầm định không có đơn vị. DonVi nhập dạng chuỗi.
Le: không bắt buộc nhập. Ngầm định cách đọc "lẻ". Le nhập dạng chuỗi.
Phay: không bắt buộc nhập. Ngầm định không có dấu tách nhóm. Phay nhập dạng chuỗi.
Hoa: không bắt buộc nhập. Ngầm định viết hoa ký tự đầu tiên. Hoa nhập dạng Boolean:
_____________- TRUE hoặc số nguyên <>0: viết hoa ký tự đầu
_____________- FALSE hoặc 0: không viết hoa ký tự đầu.

Ví dụ đọc số 1.123.405 tại ô B2

Công thức​


|
Kết quả​


|
Ghi chú​

|
=Docso($B$2)|Một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm|Không có tham số DonVi, Le, Phay, Hoa (ngầm định)|
=Docso($B$2;"đồng")|Một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm đồng|Có tham số DonVi|
=Docso($B$2;"đồng";"linh")|Một triệu một trăm hai mươi ba ngàn bốn trăm linh năm đồng|Có tham số DonVi, Le|
=Docso($B$2;"đồng";"linh";"-")|Một triệu- một trăm hai mươi ba ngàn- bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu gạch " - " tách nhóm)|
=Docso($B$2;"đồng";"linh";",")|Một triệu, một trăm hai mươi ba ngàn, bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu phẩy " , " tách nhóm)|
=Docso($B$2;"đồng";"linh";",";0)|một triệu, một trăm hai mươi ba ngàn, bốn trăm linh năm đồng|Có tham số DonVi, Le, Phay (dùng dấu phẩy " , " tách nhóm), Hoa (viết chữ thường ký tự đầu)|
=Docso($B$2;"";"";"";0)|một triệu một trăm hai mươi ba ngàn bốn trăm lẻ năm|Bỏ qua DonVi, Le, Phay. Hoa (viết chữ thường ký tự đầu)|
Mã:
Function DocSo(Number As String, Optional DonVi As String = "", Optional Le As String = "", Optional Phay As String = "", Optional Hoa As Boolean = True) As String
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
[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 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)
  dau = arGrp(4)
End If
dvInt = Int(Number)
n1 = ((Len(Str(dvInt)) - 1) Mod 9)
dvInt = String(9 - (((Len(Str(dvInt)) - 1) Mod 9) Mod 12), "0") & dvInt
n03 = 1
For nId = 1 To Len(dvInt) Step 3
  s1 = "": s2 = "": s3 = "": sNhom = ""
  If Mid(dvInt, nId, 3) = "000" Then
    s123 = ""
  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 + 1
Next
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
  DocSo = UCase(Left(Trim(dInt), 1)) & Mid(Trim(dInt) & arGrp(6), 2)
Else
  DocSo = Trim(dInt) & arGrp(6)
End If
Exit Function
baoloi:
DocSo = Number & " ?"
End Function
Hàm này cho Unicode, tôi sẽ viết tiếp các hàm cho VNI-Windows và TCVN3-ABC
Hàm của thầy dùng tốt,em dùng hàm này để đổi tiền.vấn đề nảy sinh là em muốn đọc tiền chẵn,tiền lẻ.ví dụ 15000 = mười lăm nghìn đồng chẵn,15123 = mười lăm nghìn một trăm hai ba đồng.Thầy giúp em với
 
Upvote 0
Có đọc được tới hàng tỷ không? Với lại tui thấy không đọc được chữ số 0 trong hàng trăm, vì ngân hàng yêu cầu. Ví dụ: 123065 (một trăm hai mươi ba triệu không trăm sáu mươi lăm ngàn đồng chẵn). Xin cải tổ giúp.
 
Upvote 0
Có đọc được tới hàng tỷ không? Với lại tui thấy không đọc được chữ số 0 trong hàng trăm, vì ngân hàng yêu cầu. Ví dụ: 123065 (một trăm hai mươi ba triệu không trăm sáu mươi lăm ngàn đồng chẵn). Xin cải tổ giúp.
Sao bạn không dùng thử hàm Docso trước khi hỏi ?
Có đọc được tới hàng tỷ không?
Đọc chính xác đến số 15 chữ số (999.999 tỷ)
Các số trên 15 chữ số vẫn đọc được nhưng excel làm tròn các số bên phải. Ví dụ 123.456.789.012.345.678 > 123.456.789.012.346.000

123065 (một trăm hai mươi ba triệu không trăm sáu mươi lăm ngàn đồng chẵn)

Docso(123065) > Một trăm hai mươi ba ngàn không trăm sáu mươi lăm
Docso(123065000) > Một trăm hai mươi ba triệu không trăm sáu mươi lăm ngàn
Đúng như yêu cầu của trungtintran

thanlan102 đã viết:
Hàm của thầy dùng tốt,em dùng hàm này để đổi tiền.vấn đề nảy sinh là em muốn đọc tiền chẵn,tiền lẻ.ví dụ 15000 = mười lăm nghìn đồng chẵn,15123 = mười lăm nghìn một trăm hai ba đồng.Thầy giúp em với
Do mỗi người có yêu cầu khác nhau, nên khó có thể viết 1 hàm đáp ứng cho nhiều người.
Từ hàm Docso, em có thể kết hợp với các hàm có sẳn của excel để phục vụ cho yêu cầu của riêng của mình.
Còn chẳn là sao? 15000 là chẳn, 15500, 15550 có gọi là chẳn không?
Nếu số hàng đơn vị là 0 (15000 là chẳn, 15500, 15550) gọi là chẳn thì em có thể dùng công thức này:
=IF(MOD(A1,10)=0, docso(A1) & " chẳn", docso(A1) & " đồng")
 
Upvote 0
SG mong đc học hỏi file của bạn. Bạn xem thử Add-ins đọc số thành chữ của anh Maika tại đây xem nha.



Sau khi dowload file về. Bạn giải nén. Copy file bạn vừa giải nén. Tiếp theo bạn vào tool====>add-ins======>browse======>paste file bạn vừa giải nén vào.

Bạn xem thêm bài: Minh họa cách tạo, nạp và sử dụng Add-Ins trong MS Excel nha.
cái này thì hay, nhưng khổ nổi đem sang máy khác (không có cài macro nay) thì lại không hiện thị được
 
Upvote 0
Font TCVN3 không phù hợp với các code trong office 2003 chạy win 7

Cho mình hỏi tại sao khi dùng hàm đổi số thành chữ font TCVN3 trên Office 2003 (hệ điều hành Win7) thì font cứ bị lỗi một số chỗ nhỉ, trong khi đó cũng hàm này khi dùng trên win XP thì ngon lành cành đào
 
Lần chỉnh sửa cuối:
Upvote 0
Cách tạo hàm này thế nào? Bạn có thể nói rõ cho mình được không? Mình tìm hàm dịch số mà không biết phải làm thế nào? Các bạn hướng dẫn cụ thể cho tui với. Cảm ơn cả nhà nghe!
 
Upvote 0
Kg: thầy Long
Hàm docso cua thầy đáp ứng được yêu cầu của người dùng, nhưng Funnction của thầy không đọc đúng cho số hàng ngàn tỷ khi nhóm ngàn là "000" (ví dụ: docso(2.000.000.009.000)= "Hai ngàn không trăm lẻ chín ngàn" ), Thầy bổ sung lại giúp mọi người với. Cảm ơn
 
Upvote 0
Kg: thầy Long
Hàm docso cua thầy đáp ứng được yêu cầu của người dùng, nhưng Funnction của thầy không đọc đúng cho số hàng ngàn tỷ khi nhóm ngàn là "000" (ví dụ: docso(2.000.000.009.000)= "Hai ngàn không trăm lẻ chín ngàn" ), Thầy bổ sung lại giúp mọi người với. Cảm ơn

Nếu bạn chỉ quan tâm tới ứng dụng (không lập trình VBA) thì tham khảo add-in dưới đây:
http://www.giaiphapexcel.com/forum/...-độ-nhanh-tối-đa-nhanh-hơn-80-các-Addins-khác
 
Upvote 0
Kg: thầy Long
Hàm docso cua thầy đáp ứng được yêu cầu của người dùng, nhưng Funnction của thầy không đọc đúng cho số hàng ngàn tỷ khi nhóm ngàn là "000" (ví dụ: docso(2.000.000.009.000)= "Hai ngàn không trăm lẻ chín ngàn" ), Thầy bổ sung lại giúp mọi người với. Cảm ơn
Tôi đã chỉnh lại code ở bài #58
Cám ơn duchuynh103 đã phát hiện lỗi
 
Upvote 0
em đã mở library ra rồi nhưng không biết copy cái nào nữa, chỉ thấy các file: EUROTOOL; HTML; LOOKUP; SUMIF nên không thể copy file UDF.XLA và check vào UDF được. Rất mong được sự chỉ dẫn tân tình. Em cảm ơn nhiều
 
Upvote 0
Xin chi cho minh cach su dung voi. Minh Add - Ins roi nhung dung the nao day
 
Upvote 0
Hàm chuyển số thành chữ font Unicode đây...


Public Function vnd(Diachi)
Dim Ketqua, Sotien, Nhom, Chu, Dich, S1, S2, S3 As String
Dim I, J, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If Diachi = 0 Then
Ketqua = "Kh" & ChrW(244) & "ng " & ChrW(273) & ChrW(7891) & "ng."
Else
If Abs(Diachi) >= 1E+15 Then
Ketqua = "S" & ChrW(7889) & " qu" & ChrW(225) & " l" & ChrW(7899) & "n !"
Else
If Diachi < 0 Then
Ketqua = "tr" & ChrW(7915) & Space(1)
Else
Ketqua = Space(0)
End If
Sotien = Format(Abs(Diachi), "##############0.00") '18 digits with 2 decimal
Sotien = Right(Space(15) & Sotien, 18)
Hang = Array("None", "tr" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i", "ng" & ChrW(236) & "n")
Doc = Array("None", "ng" & ChrW(224) & "n t" & ChrW(7927), "t" & ChrW(7927), "tri" & ChrW(7879) & "u", "ng" & ChrW(224) & "n", ChrW(273) & ChrW(7891) & "ng", ".")
Dem = Array("None", "m" & ChrW(7897) & "t", "hai", "ba", "b" & ChrW(7889) & "n", "n" & ChrW(259) & "m", "s" & ChrW(225) & "u", "b" & ChrW(7843) & "y", "t" & ChrW(225) & "m", "ch" & ChrW(237) & "n")
For I = 1 To 6
Nhom = Mid(Sotien, I * 3 - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If I = 5 Then
Chu = ChrW(273) & ChrW(7891) & "ng" & Space(1)
Else
Chu = Space(0)
End If
Case ".00"
Chu = "ch" & ChrW(7861) & "n ."
Case Else
S1 = Left(Nhom, 1)
S2 = Mid(Nhom, 2, 1)
S3 = Right(Nhom, 1)
Chu = Space(0)
Hang(3) = Doc(I)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(Nhom, J, 1))
If S > 0 Then
Dich = Dem(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "möôøi" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "l" & Mid(Dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 4) Then
Dich = "leû" & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
Vitri = InStr(1, Chu, "m" & ChrW(432) & ChrW(417) & "i m" & ChrW(7897) & "t", 1)
If Vitri > 0 Then Mid(Chu, Vitri, 10) = "m" & ChrW(432) & ChrW(417) & "i m" & ChrW(7889) & "t"
Ketqua = Ketqua & Chu
End If
Next I
End If
End If
vnd = "(" & UCase(Left(Ketqua, 1)) & Mid(Ketqua, 2) & ")"
End Function
 
Upvote 0
các bạn ơi tôi đã làm nhưng nó chẳng có chữ ( đồng chẵn) ở cuối là sao vậy
 
Upvote 0
Đề tài này có nhiều trên GPE mình rồi đó bạn. Bạn vào thư viện GPE tải về các add-ins hỗ trợ việc dịch số ra chữ về xài. Còn nếu không muốn mất thời gian thì tải file mình đính kèm bên dưới. Sau đó giải nén vào một thư mục (thư mục nào cũng được, miễn dễ nhớ). Mở excel lên, chọn Tool-->Add-Ins-->Browse, chỉ đường dẫn tới chỗ lưu file này. ấn OK.

Muốn đọc số ra chữ bạn gõ vào công thức tại ô cần đặt chữ: =VND(số tiền).
Add-Ins này cũng hỗ trợ chuyển đổi chữ hoa, chữ thường đấy nhé (giống trong Word ấn Shift+F3 vậy)
Cách làm như sau: chọn vùng cần đổi sang chữ HOA/thường
Phím tắt như sau:
Ctrl+Shift+T: chuyển hết thành chữ thường
Ctrl+Shift+H: CHUYỂN HẾT THÀNH CHỮ HOA
Ctrl+Shift+K: Chuyển Thành Dạng Như Thế này.
File này mình đúc kết từ các bài viết của các anh chị GPE mình đấy!
Bạn làm thử xem nhé
Anh cadafi ơi.Các bước như trên em đều làm được hết rồi nhưng e có thắc mắc là tại sao lần sau cứ mỗi khi thoát ra vào lại excel thì máy lại hiện báo là bị lỗi .lúc đó mình lại phải vào addin gỡ nó ra rùi lại cài vào rồi mới sd được.A cho e hỏi có cách nào để lần sau mình vào máy ko báo lỗi thế không?Cám ơn A nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn man ơi! Mình dow hàm của bạn nhưng khi mình thực hiện thì nó không hiển thị "đồng" ở đuôi nhỉ ? Bạn chỉ cho mình với nha.Cảm ơn bạn nhiều.
 
Upvote 0
Web KT
Back
Top Bottom