Add-in: Đổi số sang chữ trong Excel sử dụng font Unicode

Liên hệ QC
bạn xem lại phần chuyển đổi sang USDVN và USD nhé, mình chuyển mà không được. Cảm ơn
 
Em có code hàm số ra chữ bằng tiền việt, sau đó em có sửa ngôn ngữ lại thành các loại ngoại tệ khách như: dollar Úc, Canada, Euro, vàng. nhưng mỗi loại phải cần 1 modelu để chạy. em nhờ các bác viết ngắn gọn hơn chỉ dùng 1 đoạn code mà có thể dùng được các hàm số ra các ngoại tệ và cả tiền việt. (file code đính kèm). nếu được xin các bác giải thích dùm em, vì em mới vọt cái code nên chưa biết nhiều "linh mới hoàn toàn". xin cảm ơn
 

File đính kèm

  • ham SRC addin.zip
    23.2 KB · Đọc: 70
Cách sử dụng hàm của bạn như thế nào thế?
Mình thấy định đạng của file không phải là add in?
Có thể add in vào excel không?
nó gồm 5 hàm: =sorachu( ); =sorausd ( ); =soraaud( ); = soraeur( ); = sorasjc( )
đúng rồi file này ko định dạng add in, có thể addin được.
 
Mình thấy vẫn còn chữ "chẵn" và không có dấu chấm mà
Sorry nhe chiều mình bận quá sửa rồi mà up ko coi lại,
mình up lại bạn xem đúng ý chưa.

các pro ơi bảng mã chữ (Ỉ) của uni là bao nhiêu vậy, em chỉ tìm được chữ (i) là 69, còn chữ ('i') là 8b, nhưng tìm hòai ko được chữ (ỉ). mong các pro chỉ giáo.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Sorry nhe chiều mình bận quá sửa rồi mà up ko coi lại,
mình up lại bạn xem đúng ý chưa.

các pro ơi bảng mã chữ (Ỉ) của uni là bao nhiêu vậy, em chỉ tìm được chữ (i) là 69, còn chữ ('i') là 8b, nhưng tìm hòai ko được chữ (ỉ). mong các pro chỉ giáo.
Bạn tham khảo nhé:
Ký tự|Mã Dec|Mã Hex
i|105|69
í|237|ED
ì|236|EC
ỉ|7881|1EC9
ĩ|297|129
ị|7883|1ECB
I|73|49
Í|205|CD
Ì|204|CC
Ỉ|7880|1EC8
Ĩ|296|128
Ị|7882|1ECA
Để lấy mã của các ký tự Unicode, bạn dùng hàm AscW trong VBA nhé.
 
Có thể dung lượng file đính kèm của bạn không đủ để up hoăc dung lượng file của bạn lớn hơn giới hạn cho phép? Bạn kiểm tra lại xem
bạn xem lại nhe!

có ai trả lời em bài #124 với
"nhưng mỗi loại phải cần 1 modelu để chạy. em nhờ các bác viết ngắn gọn hơn chỉ dùng 1 đoạn code mà có thể dùng được các hàm số ra các ngoại tệ và cả tiền việt. "
 

File đính kèm

  • ham SRC addin.zip
    26.7 KB · Đọc: 66
Chỉnh sửa lần cuối bởi điều hành viên:
bạn xem lại nhe!

có ai trả lời em bài #124 với
"nhưng mỗi loại phải cần 1 modelu để chạy. em nhờ các bác viết ngắn gọn hơn chỉ dùng 1 đoạn code mà có thể dùng được các hàm số ra các ngoại tệ và cả tiền việt. "
1) Bài của bạn là #123 nhé! hiii
2) add in đã đúng ý mình. Nhưng bạn chỉ cho mình chỉnh ngay trong Code để dấu chấm nằm sát cạnh chữ "đồng" chứ không cách ra 1 khoảng trắng như thế?
3) Mình thử với số này 32457058050 ra kết quả thế này "Ba mươi hai tỷ, bốn trăm năm mươi bảy triệu, năm mươi tám ngàn, năm mươi đồng ." Bạn chỉnh Code để nó ra kết quả thế này nhé "Ba mươi hai tỷ, bốn trăm năm mươi bảy triệu, không trăm năm mươi tám ngàn, không trăm năm mươi đồng." nhé! Chỉ thêm hai chữ "không"
Thanks
 
Lần chỉnh sửa cuối:
Mình up lại dấu "chấm" được đưa sát vào, còn đọc thêm số "không" nữa thì cái này nhờ các bác pro chỉnh dùm lại 1 tí. Cảm ơn
 

File đính kèm

  • ham SRC addin.zip
    28.1 KB · Đọc: 80
hàm của bài #111 là =vnd(), cấu trúc giống như hàm mình gửi, nhưng không dọc số thập phân và không phân cách dấu (,).
Thế không phải là bài mình cần rồi
1) Mình muốn có dấu phảy phân cách phần nghìn
2) Và có chữ "đồng" cuối cùng
3) Và có 1 dấu chấm sát cạnh chữ "đồng"
 
Thế không phải là bài mình cần rồi
1) Mình muốn có dấu phảy phân cách phần nghìn
2) Và có chữ "đồng" cuối cùng
3) Và có 1 dấu chấm sát cạnh chữ "đồng"
Mình nghĩ code này không quá khó đâu! Bạn có thể tự tìm hiểu được mà. Khi mình chưa biết gì về VBA, đoạn code VBA đầu tiên mình tiếp xúc chính là hàm đọc số này, trong 1 ngày tìm hiểu mình đã sửa được code theo ý mình. Hãy chủ động thay vì chờ đợi bạn ạ.
 
Lần chỉnh sửa cuối:
Mình hỏi thêm . Đây là Code?
Nhưng có thể add in vào excel không ?
Vì mình thấy định đạng file này không phải là file add in. Các bạn có cách nào chuyển thành file add in để add vào excel không?

Bạn xem file hướng dẫn addin đính kèm nhé!
đây là file hướng dẫn mình vọt, được search trên web mình quên tên tác giả, xin cảm ơn tác giả đã viết. mình ko biết rành về code, nhưng tìm hiều trên GPE rồi đưa bảng mã vào thì thực hiện
nếu thực hiện được xin cho 1 lần cảm ơn.
 

File đính kèm

  • Ham SRC + huong dan.zip
    7.9 KB · Đọc: 177
Các bác ơi, mình đã tải được Doiso.xla rồi nhưng chưa biết cách cài đặt nơi, máy nình cài win2010, Bác nào biết chỉ giúp mình với nhé_thanks nhiều nhiều
 
Anh ơi nếu muốn dùng code này thì em phải copy đoạn này vào phần nào anh có thể hướng dẫn em được không ạh. Em cảm ơn nhiều

Đây là hàm đổi số ra chữ cho 3 bảng mã :
Unicode: hàm DocSoUni
Vni Window: hàm DocSoVni
TCVN3 ABC: hàm DocSoAbc
Các bạn có thể tải tập tin DocsoVn.zip có sẳn 3 hàm trên.

Mã:
'=====================
Function DocSoVni(conso) As String
s09 = Array("", " moät", " hai", " ba", " boán", " naêm", " saùu", " baûy", " taùm", " chín")
lop3 = Array("", " trieäu", " nghìn", " tyû")
If Trim(conso) = "" Then
  DocSoVni = ""
ElseIf IsNumeric(conso) = True Then
  If conso < 0 Then dau = "aâm " Else dau = ""
  conso = Application.WorksheetFunction.Round(Abs(conso), 0)
  conso = " " & conso
  conso = Replace(conso, ",", "", 1)
  vt = InStr(1, conso, "E")
  If vt > 0 Then
    sonhan = Val(Mid(conso, vt + 1))
    conso = Trim(Mid(conso, 2, vt - 2))
    conso = conso & String(sonhan - Len(conso) + 1, "0")
  End If
  conso = Trim(conso)
  sochuso = Len(conso) Mod 9
  If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
  docso = ""
  i = 1
  lop = 1
  Do
    n1 = Mid(conso, i, 1)
    n2 = Mid(conso, i + 1, 1)
    n3 = Mid(conso, i + 2, 1)
    baso = Mid(conso, i, 3)
    i = i + 3
    If n1 & n2 & n3 = "000" Then
      If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " tyû" Else s123 = ""
    Else
      If n1 = 0 Then
        If docso = "" Then s1 = "" Else s1 = " khoâng traêm"
      Else
        s1 = s09(n1) & " traêm"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = " linh"
        End If
      Else
        If n2 = 1 Then s2 = " möôøi" Else s2 = s09(n2) & " möôi"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " moät" Else s3 = " moát"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " laêm"
      Else
        s3 = s09(n3)
      End If
      If i > Len(conso) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & lop3(lop)
      End If
    End If
    lop = lop + 1
    If lop > 3 Then lop = 1
    docso = docso & s123
    If i > Len(conso) Then Exit Do
  Loop
  If docso = "" Then DocSoVni = "khoâng" Else DocSoVni = dau & Trim(docso)
Else
  DocSoVni = conso
End If
End Function
'==================================
Function DocSoAbc(conso) As String
s09 = Array("", " mét", " hai", " ba", " bèn", " n¨m", " s¸u", " b¶y", " t¸m", " chÝn")
lop3 = Array("", " triÖu", " ngh×n", " tû", " triÖu", " ngh×n", "")
If Trim(conso) = "" Then
  DocSoAbc = ""
ElseIf IsNumeric(conso) = True Then
  If conso < 0 Then dau = "©m " Else dau = ""
  conso = Application.WorksheetFunction.Round(Abs(conso), 0)
  conso = " " & conso
  conso = Replace(conso, ",", "", 1)
  vt = InStr(1, conso, "E")
  If vt > 0 Then
    sonhan = Val(Mid(conso, vt + 1))
    conso = Trim(Mid(conso, 2, vt - 2))
    conso = conso & String(sonhan - Len(conso) + 1, "0")
  End If
  conso = Trim(conso)
  sochuso = Len(conso) Mod 9
  If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
  docso = ""
  i = 1
  lop = 1
  Do
    n1 = Mid(conso, i, 1)
    n2 = Mid(conso, i + 1, 1)
    n3 = Mid(conso, i + 2, 1)
    baso = Mid(conso, i, 3)
    i = i + 3
    If n1 & n2 & n3 = "000" Then
      If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " tû" Else s123 = ""
    Else
      If n1 = 0 Then
        If docso = "" Then s1 = "" Else s1 = " kh«ng tr¨m"
      Else
        s1 = s09(n1) & " tr¨m"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = " linh"
        End If
      Else
        If n2 = 1 Then s2 = " m­êi" Else s2 = s09(n2) & " m­¬i"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " mét" Else s3 = " mèt"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " l¨m"
      Else
        s3 = s09(n3)
      End If
      If i > Len(conso) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & lop3(lop)
      End If
    End If
    lop = lop + 1
    If lop > 3 Then lop = 1
    docso = docso & s123
    If i > Len(conso) Then Exit Do
  Loop
  If docso = "" Then DocSoAbc = "kh«ng" Else DocSoAbc = dau & Trim(docso)
Else
  DocSoAbc = conso
End If
End Function
'===============================
Function DocSoUni(conso) As String
s09 = Array("", " 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")
lop3 = Array("", " tri" & ChrW(7879) & "u", " ngh" & ChrW(236) & "n", " t" & ChrW(7927))
'Stop
If Trim(conso) = "" Then
  DocSoUni = ""
ElseIf IsNumeric(conso) = True Then
  If conso < 0 Then dau = ChrW(226) & "m " Else dau = ""
  conso = Application.WorksheetFunction.Round(Abs(conso), 0)
  conso = " " & conso
  conso = Replace(conso, ",", "", 1)
  vt = InStr(1, conso, "E")
  If vt > 0 Then
    sonhan = Val(Mid(conso, vt + 1))
    conso = Trim(Mid(conso, 2, vt - 2))
    conso = conso & String(sonhan - Len(conso) + 1, "0")
  End If
  conso = Trim(conso)
  sochuso = Len(conso) Mod 9
  If sochuso > 0 Then conso = String(9 - (sochuso Mod 12), "0") & conso
  docso = ""
  i = 1
  lop = 1
  Do
    n1 = Mid(conso, i, 1)
    n2 = Mid(conso, i + 1, 1)
    n3 = Mid(conso, i + 2, 1)
    baso = Mid(conso, i, 3)
    i = i + 3
    If n1 & n2 & n3 = "000" Then
      If docso <> "" And lop = 3 And Len(conso) - i > 2 Then s123 = " t" & ChrW(7927) Else s123 = ""
    Else
      If n1 = 0 Then
        If docso = "" Then s1 = "" Else s1 = " kh" & ChrW(244) & "ng tr" & ChrW(259) & "m"
      Else
        s1 = s09(n1) & " tr" & ChrW(259) & "m"
      End If
      If n2 = 0 Then
        If s1 = "" Or n3 = 0 Then
          s2 = ""
        Else
          s2 = " linh"
        End If
      Else
        If n2 = 1 Then s2 = " m" & ChrW(432) & ChrW(7901) &  "i" Else s2 = s09(n2) & " m" & ChrW(432) & ChrW(417) &  "i"
      End If
      If n3 = 1 Then
        If n2 = 1 Or n2 = 0 Then s3 = " m" & ChrW(7897) & "t" Else s3 = " m" & ChrW(7889) & "t"
      ElseIf n3 = 5 And n2 <> 0 Then
        s3 = " l" & ChrW(259) & "m"
      Else
        s3 = s09(n3)
      End If
      If i > Len(conso) Then
        s123 = s1 & s2 & s3
      Else
        s123 = s1 & s2 & s3 & lop3(lop)
      End If
    End If
    lop = lop + 1
    If lop > 3 Then lop = 1
    docso = docso & s123
    If i > Len(conso) Then Exit Do
  Loop
  If docso = "" Then DocSoUni = "kh" & ChrW(244) & "ng" Else DocSoUni = dau & Trim(docso)
Else
  DocSoUni = conso
End If
End Function
 
Các bạn ơi, mình làm lương có số lẻ đằng sau ex: 15.000.000,25...
Trong bảng lương mình chỉ lấy đến 15.000.000 thôi, nhưng khi đưa =vnd(số) trên thì đọc là Mười lăm triệu, hai lăm xu.. Giúp mình với, làm sao bỏ được cái đoạn xu..., không đọc phần lẻ nữa. Cảm ơn cả nhà nhá.
 
Các bạn ơi, mình làm lương có số lẻ đằng sau ex: 15.000.000,25...
Trong bảng lương mình chỉ lấy đến 15.000.000 thôi, nhưng khi đưa =vnd(số) trên thì đọc là Mười lăm triệu, hai lăm xu.. Giúp mình với, làm sao bỏ được cái đoạn xu..., không đọc phần lẻ nữa. Cảm ơn cả nhà nhá.
Bạn round nó lại
VD: vnd(round(conso,0)) => vnd(round(15.000.000,25,0))
 
Web KT
Back
Top Bottom