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

Liên hệ QC

infes

Thành viên mới
Tham gia
7/12/06
Bài viết
2
Được thích
444
Gởi các bạn Add-in: Đổi số sang chữ trong Excel sử dụng font Unicode.
Cách sử dụng:
1. Chép file Doiso.XLA vào thư mục Add-in
Đối với Excel XP trên Windows XP:
C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns
Đối với Excel 2000 trên Windows 98:
C:\Windows\Application Data\Microsoft\AddIns
Đối với Excel 97 trên Windows 98:
C:\Program Files\Microsoft Office\Office\Library
2. Khởi động lại Excel, cài đặt add-in vừa tạo cho Excel bằng cách chọn trình đơn Tools\ Add-Ins để mở hộp thoại Add-Ins, chọn tên add-in " Doiso" trong danh sách Add-Ins available, rồi bấm OK.
3. Hàm sử dụng: vnd(số cần đổi")

Hy vong Add-in này có thể giúp ích cho các bạn.
 

File đính kèm

  • DoiSo.zip
    15.8 KB · Đọc: 70,757
Lần chỉnh sửa cuối:
truonghb đã viết:
hướng dẫn mình cachs dùng với, mình đã copy, cài đúng theo hướng dẫn nhưng làm thế nào để nó chuyển từ số sang chỗ

hoaxuongrong_2911 đã viết:
Minh cung chep file doiso.zip , da lam dung huong dan xong van khong the nao doi so ra chu duoc.giup minh voi

Trả lời:

infes đã viết:
Cách sử dụng:
1. Chép file Doiso.XLA vào thư mục Add-in

Đối với Excel XP trên Windows XP:

C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns

Đối với Excel 2000 trên Windows 98:

C:\Windows\Application Data\Microsoft\AddIns

Đối với Excel 97 trên Windows 98:

C:\Program Files\Microsoft Office\Office\Library

2. Khởi động lại Excel, cài đặt add-in vừa tạo cho Excel bằng cách chọn trình đơn Tools\ Add-Ins để mở hộp thoại Add-Ins, chọn tên add-in " Doiso" trong danh sách Add-Ins available, rồi bấm OK.

3. Hàm sử dụng: vnd(số cần đổi")

Hy vong Add-in này có thể giúp ích cho các bạn.

SG nói thêm ở bước 3. Giả sử bạn cần đọc ô A1=12345 .

-Nếu bạn muốn đọc số bằng tiếng việt thì bạn gõ:

=vnd(A1)
--> kết quả: Mười hai ngàn ba trăm bốn mươi lăm đồng chẵn.

-Nếu bạn muốn đọc số tiền USD bằng tiếng việt thì bạn gõ:

=usvn(A1)
--> kết quả:Mười hai ngàn ba trăm bốn mươi lăm đôla chẵn.

-Nếu bạn muốn đọc số tiền USD bằng tiếng anh thì bạn gõ:

=usd(A1)
--> kết quả:Twelve thousand three hundred forty five dollars only.


Chú ý:
Các bạn nhớ gõ bài có dấu nha!.
 
Đâ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
 

File đính kèm

  • DocsoVN.zip
    15.2 KB · Đọc: 12,289
Chỉnh sửa lần cuối bởi điều hành viên:
Xin lỗi bạn ngocduyen và các bạn. Do không cẩn thận tôi đã gởi tập tin docsovn có lỗi. Tôi đã gởi lại docsovn.zip ngày 8/5/2007
 
Tôi cũng có một cái addin dùng để chuyển từ số sang chữ( Tôi không nhớ tên tác giả). Có thể chuyển số sang chữ tiếng bằng Việt và Tiếng Anh.

Cú pháp:
=VND(giá trị,true) : để chuyển đổi đơn vị tiền tệ
=VND(giá trị) : để chuyển đổi số thông thường
=USD(giá trị,true) : để chuyển đổi đơn vị tiền tệ
=USD(giá trị) : để chuyển đổi số thông thường
------------------------------------------------------------
De vnTools hoat dong, may tinh cua ban can Windows XP va MS Excel XP tro len.

Cai dat vnTools Add-In, ban thao tac nhu sau :
1/ Chay file vnTools.exe va chi dinh den mot thu muc nao do tren o dia cung may tinh cua ban. Mac dinh, duong dan se la ..\Program Files\vnTools
2/ Khoi dong Excel voi mot Workbook bat ky nao do.
3/ Goi menu : Tools - Add-Ins va nhap chuot len nut Browser. Duyet tim den thu muc chua Add-in ma ban vua cai vao may tinh. Chon no (tap tin: Ufunctions.xla), sau do nhan nut OK.
4/ Chac chan rang tren hop thoai Add-Ins cua Excel, da co xuat hien ten NTD's Tools va dau kiem (checkBox) lua chon.
5/ Nhap nut OK. Bay gio Add-in da duoc cai dat
--------------------------------------------
Lưu ý nếu bạn dùng BKAV thì bỏ chế độ " diệt không cần hỏi đi nhé"
 

File đính kèm

  • vnTools.rar
    265.5 KB · Đọc: 10,352
Cám ơn các bạn đã cung cấp.
Xin phép sử dụng một số hàm của bác Long để em viết giáo trình nhé! Hàm này rất hiện đại và ngắn gọn vì bác đã sử dụng cả WorkSheetFunctions.
 
Bạn down load file của anh Phamduylong ở bài #10, sau đó sử dụng công thức như sau:

-Nếu bạn muốn đọc số tiền USD bằng tiếng việt:

+Font Unicode thì bạn gõ: =DocSoUni(A1)​

+Font Vni Window thì bạn gõ: =DocSoVni(A1)​

+Font Vni Window thì bạn gõ: =DocSoAbc(A1)​
 
Bạn down load file của anh Phamduylong ở bài #10, sau đó sử dụng công thức như sau:

-Nếu bạn muốn đọc số tiền USD bằng tiếng việt:
+Font Unicode thì bạn gõ: =DocSoUni(A1)​
+Font Vni Window thì bạn gõ: =DocSoVni(A1)​
+Font Vni Window thì bạn gõ: =DocSoAbc(A1)​
__________________
Thanks bạn secret !
Nhưng mình đã tải file cua anh Long rồi, nhưng mình vẫn không chạy được, hay la fải sử dụng cả phần VBA mà mình chưa biết về VBA nhiều.
Bạn có thể hướng dẫn mình chi tiết không.
Hàng ngày mình phải lập thông báo về tiền $ rất nhiều, nên rất vất vả.
Bạn giúp mình nhé.
 
Bạn có sử dụng BKAV không? Nó xóa mất macro rồi !
 
BKAV xem macro của Excel là virus nên xóa tất cả các lệnh đã viết. Phải add-in lại lừ bản chưa bị BKAV để mắt tới.
 
Secret_grasses đã viết:
Trả lời:



SG nói thêm ở bước 3. Giả sử bạn cần đọc ô A1=12345 .

-Nếu bạn muốn đọc số bằng tiếng việt thì bạn gõ:

=vnd(A1)
--> kết quả: Mười hai ngàn ba trăm bốn mươi lăm đồng chẵn.

-Nếu bạn muốn đọc số tiền USD bằng tiếng việt thì bạn gõ:

=usvn(A1)
--> kết quả:Mười hai ngàn ba trăm bốn mươi lăm đôla chẵn.

-Nếu bạn muốn đọc số tiền USD bằng tiếng anh thì bạn gõ:

=usd(A1)
--> kết quả:Twelve thousand three hundred forty five dollars only.


Chú ý:
Các bạn nhớ gõ bài có dấu nha!.


SG có thể xem lại đc ko?
Tôi đã download docso.zip về nhưng chỉ chạy được hàm =vnd(so) ra tiếng Việt. Các hàm như =usvn(so) hay usd(so) đều cho kết quả là #NAME?
Ngoài ra, trong kết quả của hàm =vnd(so) có các dấu phẩy (,) ngăn cách bạn có thể bỏ giúp các dấu phảy đó đc ko? Ham -usd(so) nên cho kết quả là ... US dollars thay vì chỉ là dollars để phân biệt đô Mỹ với đô khác.
Cảm ơn bạn nhiều.
 
Giờ mình muốn đọc số tiền VND bằng Tiếng Anh thì ntn các cậu? Liệu có phải ngồi sửa lại không ạ?

Cảm ơn cả nhà!
 
lỗi phông quá mình dùng uncode mà vẫn lỗi không đọc được chữ nào
 
lỗi phông quá mình dùng uncode mà vẫn lỗi không đọc được chữ nào
Bạn nên trả lời có trích dẫn hoặc hỏi rõ ràng hơn để mọi người biết bạn đang nói đến "khía cạnh" nào.
Nếu bạn định nói về tiện ích của bạn Phạm Duy Long thì nếu tôi không lầm thì vd. hàm đổi số thành chữ, sắp xếp, chuyển đổi bảng mã cần phải chỉnh sửa. Mà có nhiều phiên bản quá nên cũng chả biết phiên bản mới nhất là bản nào, và bạn đang dùng bản nào.
 
Tôi mới gia nhập làm thành viên của GPE, có xem bài đổi số thành chữ và làm thử theo đúng hướng dẫn nhưng vẫn không ra kết quả. Đã vào add-in chạy "doiso" nhưng vẫn không ra kết quả. Mong cả nhà GPE chỉ giúp. Cám ơn rất nhiều.
 
Bác Long làm ơn cho em hỏi, file đổi số thành chữ của bác ý, em đã làm đúng theo hướng dẫn, đã copy và chạy được add-in, đã bật unicode rồi nhưng khi viết hàm =vnd(số tiền) thì lại không ra kết quả. Mong bác chỉ giúp. Cảm ơn bác rất nhiều.
 
Web KT
Back
Top Bottom