Add-in: Đổi số sang chữ trong Excel sử dụng font Unicode (1 người xem)

  • Thread starter Thread starter infes
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

ai gặp lỗi này rồi xin chỉ mình với, ở công ty có sẵn 1 file đọc số tiền như thế này rồi, file mở lên không hiển thị đc đọc số tiền ra tiếng anh, trong khi đọc tiếng việt thì vẫn bình thường, qua sheet mới cũng không đc, nhưng tạo 1 file excel mới thì đọc usd bình thường, copy từ file mới này qua file cũ thì nó hiển thị, copy và dán vào nơi cần đọc và sửa lại ô cần đọc thì nó không hiện ra format dạng như "=usd(A1)" mà lại là "='userfuntion.xla'!usd(A1)" . Vậy tình trạng này là lỗi gì và có cách nào khắc phục không ???
Mình đoán là máy chưa được cài add in Đổi số
Bạn thử
+) Gỡ bỏ add in cũ đã dùng trên excel
+) Mở 1 file excel mới từ shortcut trên màn hình nền
+) Thêm add in Đổi số
Mình nghĩ sau khi cài lại add in cho excel thì máy bạn sẽ đổi số sang chữ bình thường trên file mới và các file cũ trước đây.
 
máy đã cài addin rồi và đang sử dụng bình thường, nhưng ko hiểu sao hôm nay mở file đó lên lại bị lỗi vậy, nó báo "#VALUE" và mình làm đủ cách như trên thì nó báo vậy đó, phải thêm cái "'userfuntion.xla'" vào thì mới hiển thị ra, và mình cũng đã làm cách giống bạn rồi, remove cái addin đó ra và install lại nhưng cũng thế, hix hix ...
 
máy đã cài addin rồi và đang sử dụng bình thường, nhưng ko hiểu sao hôm nay mở file đó lên lại bị lỗi vậy, nó báo "#VALUE" và mình làm đủ cách như trên thì nó báo vậy đó, phải thêm cái "'userfuntion.xla'" vào thì mới hiển thị ra, và mình cũng đã làm cách giống bạn rồi, remove cái addin đó ra và install lại nhưng cũng thế, hix hix ...
Lỗi VALUE là báo lỗi excel không hiểu hàm bạn nhập vào (hàm vnd() đó).
Đường dẫn đến add in của bạn có tiếng việt không? Nếu có thì bỏ tiếng việt đi thử xem.
 
File đó đây nè bạn, mình ko sử dụng tiếng Việt có dấu gì hết, bạn down về và sử dụng addin đọc số tiền bằng tiếng Anh xem thử có lỗi ko ? Thanks.
 

File đính kèm

File đó đây nè bạn, mình ko sử dụng tiếng Việt có dấu gì hết, bạn down về và sử dụng addin đọc số tiền bằng tiếng Anh xem thử có lỗi ko ? Thanks.
Mình không tải được file . Bạn bỏ add in đó đi
Dùng add in của anh NguyenDuyTuan
Với cú pháp =USD(A1;;;;;TRUE) và A1=43435435
ra kết quả Forty three million, four hundred and thirty five thousand, four hundred and thirty five dollars only.
Kết quả như vậy có đúng ý bạn không?
 
File đó đây nè bạn, mình ko sử dụng tiếng Việt có dấu gì hết, bạn down về và sử dụng addin đọc số tiền bằng tiếng Anh xem thử có lỗi ko ? Thanks.
Trong file của bạn có 1 rừng name rác gây lỗi #REF. Bạn phải gửi cả add in đọc số ra tiếng Anh trong file đó thì mới thử được chứ trong file mình có thấy code của add in nào đâu!
 
Trong file của bạn có 1 rừng name rác gây lỗi #REF. Bạn phải gửi cả add in đọc số ra tiếng Anh trong file đó thì mới thử được chứ trong file mình có thấy code của add in nào đâu!
a VANLE33 cho hỏi là làm cách nào bỏ dấu phẩy phân cách giữa hàng nghìn, triệu Ví dụ như: 1.204.652 Một triệu, hai trăm linh bốn nghìn, sáu trăm bẩy mươi hai đồng
 
cái này đổi chưa chuẩn. bạn sữa lại một tí được không ?
mình muốn đổi số như thế này nè:
VD: đổi số 1023. sẽ ra : một ngàn, không trăm hai mươi ba đồng chẵn
 
ok để mình đọc. ban chinh code lại cho mình luôn được không ?
 
thank chủ topic nhé, phần mềm chạy tốt lắm.
Tiết kiệm được rất nhiều thời gian mà không sợ sai sót ^_^
 
Các bạn cho mình hỏi, mình dùng hàm đọc số thành chữ cho ở post 2 bình thường nhưng khi đổi dấu phân cách hàng nghìn từ dấu phẩy mặc định sang dấu chấm thì hàm không đọc được nữa. Mình phải sửa thế nào. Cảm ơn các bạn
 
Các bạn cho mình hỏi, mình dùng hàm đọc số thành chữ cho ở post 2 bình thường nhưng khi đổi dấu phân cách hàng nghìn từ dấu phẩy mặc định sang dấu chấm thì hàm không đọc được nữa. Mình phải sửa thế nào. Cảm ơn các bạn
có 2 cách để giả quyết vấn đề
1) bạn vào format cell để định dạng cách hiện thị
2) bạn quy đổi cách hiện thị từ hệ thống

lưu ý : kô nên tạo dấu phân cách từ dự liệu nhập
 
mình cũng đã tải về và cài đặt được nhưng khi đổi số sang chữ thì lại bị lỗi phông chữ! các ban biết tại sao thì chỉ giúp mình với nhé! thanks! mọi ý kiến xin gửi về địa chỉ: nguyenvanlinh1511@gmail.com
 
mình làm như các banj hướng dẫn nh bị lỗi #name. giúp mình với
 
mình làm như các banj hướng dẫn nh bị lỗi #name. giúp mình với
l
lỗi #name thường là bạn chưa addin hoặc chưa có module trong file hay gõ sai tên hàm
tóm lại chưa có hàm đổi số thành chữ hoặc bạn gõ sai tên hàm
bạn thử tải file về nghiên cứu nha
 

File đính kèm

Thanks bạn!
Nhưng mình đã tải file rồi, nhưng mình vẫn không chạy được,
Bạn có thể hướng dẫn mình chi tiết không.
cảm ơn bạn nhiều
 
cho mình hỏi là đã tải file về rồi và cài đặt vào Ad, làm thử luôn thì đọc thành chữ được nhưng tắt đi thì excel lại báo là lỗi ko tim thấy hàm đổi số trong kho, thử lại ko đc mà file tải về ko hề bị xóa bỏ
Mình phải làm sao để nó đọc đc số tiền ở excel đây ( office 2010)
 
có cái tool nào dùng được cho Office 2013 trên Win8.1 64 bit không ta?
 
Hàm VND thì ổn rồi. Còn 3 hàm còn lại thừa chữ cent ở cuối mặt dù số tiền là chẵn, không có số sau phẩy. Bạn điều chỉnh nhé ! Cảm ơn nhiều !
 
Chào các bạn,

Mình có dùng hàm này như sau : dãy của mình là : 12345 sẽ đọc dc là : Twelve thousand three hundred forty five dollars only

Nhưng mình mún bỏ 2 chữ "dollars only" cuối cùng thì sao ? vì mình dùng nhiu ngọai tệ khác nhau.

Thanks
 
Sorry các bạn, post nhầm file đổi số cho VNI
Đây là bản đổi file cho font Unicode

Chào bạn,
Bạn có thể bỏ hộ mình cái dấu phẩy và chữ chẵn đi có được không?
Vì sau khi mình đổi ra chữ nó có dấu phẩy như sau:
Một triệu, hai trăm năm mươi lăm ngàn, tám trăm đồng chẵn

Cảm ơn bạn rất nhiều!
 
bạn ơi, sao mình làm đầy đủ các bước như vậy rồi, có được, nhưng khi mình thoát excel ra, thì mở lại, lại không được nữa. Như vậy lỗi mình gặp là gì và mình cần sửa như thế nào?

Thanks bạn nhiều!
 
đổi số thành chữ.

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.
Còn mấy ngày nữa là bước sang năm Giáp Ngọ! em kính chúc ban quản trị diễn đàn giải pháp excell năm mới sức khỏe dồi dào, tiền vào dủng dỉnh,mã đáo thành công. năm nay em mới bước đi những bước chập chững tới VBA rất mong mọi người giúp em sửa code như thế nào để kết quả như em mong muốn(em đã diễn tả cụ thể trong file đinh kèm). trân thành cảm ơn mọi người đã giúp đỡ em!
 

File đính kèm

Cho em hỏi một chút là em bây giờ muốn thay chữ ngàn thành chữ nghìn, và bỏ đuôi đồng chẵn ví dụ 123 thành một trăm hai mươi ba đồng, thì làm thế nào ạ!
 
mọi người ơi có thể hướng dẫn cụ thể hơn dc ko? e đang dùng excel 2010 win 7 thì tìm 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
cài đặt add-in ở đâu ạ ?
 
Hàm đọc điểm số thành chữ

Em có file đính kèm, em muốn khi nhập số vào cột (bắt đầu từ G12 thì ở cột H12 đọc thành chữ)
Ví dụ:
6,0 Sáu phảy không
6.2 Sáu phảy hai
5 Năm
7,5 Bảy phảy năm
7.5 Bảy phảy năm
Rất mong được các anh chị sử dụng hàm hoặc viết code VBA giúp em!.
Em xin cảm!.
 

File đính kèm

Lần chỉnh sửa cuối:
- Em ứng dụng hàm đọc sổ DocSoUni của Thầy Phạm Duy Long thì chỉ đọc được số chẵn:
Ví dụ: 5 -----> Năm
7-----> Bảy
0 ----> Không
10-----> Mười
Nhưng khi điểm là số lẻ thì chưa đọc được mà lại chưa biết sửa, mong mọi người giúp em với.
Ví dụ khi điểm thi được nhập là: 4,5 hoặc 4.5 thì đọc là "bốn phảy năm"

 

File đính kèm

- Em ứng dụng hàm đọc sổ DocSoUni của Thầy Phạm Duy Long thì chỉ đọc được số chẵn:
Ví dụ: 5 -----> Năm
7-----> Bảy
0 ----> Không
10-----> Mười
Nhưng khi điểm là số lẻ thì chưa đọc được mà lại chưa biết sửa, mong mọi người giúp em với.
Ví dụ khi điểm thi được nhập là: 4,5 hoặc 4.5 thì đọc là "bốn phảy năm"

Bạn vào đây http://www.giaiphapexcel.com/forum/showthread.php?2048-Đọc-số-thập-phân-(số-lẻ)-như-thế-nào-là-đúng
rồi nhờ các cao thủ code "chế biến" 1 chút chắc là OK.
 
tôi đã add file chuhoathuong.xla và thành công, tuy nhiên khi chuyển số, ví dụ 120.012.345 thì trong dòng chữ hiện lên là "một trăm hai mươi triệu mười hai nghìn ba trăm bốn mươi năm đồng". Vậy tôi muốn có đủ chữ "không trăm", và thêm dấu "," sau các chữ "triệu" và "nghìn" thì sao? nhờ diễn đàn giúp đỡ. Tks
 
tôi đã add file chuhoathuong.xla và thành công, tuy nhiên khi chuyển số, ví dụ 120.012.345 thì trong dòng chữ hiện lên là "một trăm hai mươi triệu mười hai nghìn ba trăm bốn mươi năm đồng". Vậy tôi muốn có đủ chữ "không trăm", và thêm dấu "," sau các chữ "triệu" và "nghìn" thì sao? nhờ diễn đàn giúp đỡ. Tks
Add-Ins này đã post nhiều lần rồi! Hàm VND()
 

File đính kèm

Các Bác giúp em tình huống này với. Em đặt một dãy các công thức rồi SUM lại, quá trình SUM đó cho ra các số ẩn sau kết quả là các số thập phân (,) vậy mình muốn công thức không đọc các số Thập phân này mà chỉ đọc đến chữ " Đồng" thôi thì sao nhỉ. thank's các bác nhé
 
Các Bác giúp em tình huống này với. Em đặt một dãy các công thức rồi SUM lại, quá trình SUM đó cho ra các số ẩn sau kết quả là các số thập phân (,) vậy mình muốn công thức không đọc các số Thập phân này mà chỉ đọc đến chữ " Đồng" thôi thì sao nhỉ. thank's các bác nhé
Round() thử cái xem thế nào bạn!
 
Bạn có thể cho mình xin password để chỉnh sửa các add in lại theo nhu cầu của mình được không?

Mình muốn bỏ cụm từ "Bằng chữ: "
Mình đâu thấy hiện ra chữ "Bằng chữ" nào đâu mà cần sửa code để mất chữ "Bằng chữ" nhỉ?!
 
ừ nhỉ, dùng hàm Round () suốt mà mình k nghĩ ra, cảm ơn bạn vu_tuan_manh_linh nhé
 
Bạn vu tuan manh linh cho hỏi chút muốn bỏ chữ chẵn đi thì kiểu gì? ở đọc số
 
Lần chỉnh sửa cuối:
Chữ chẵn có 4 ký tự..o A1 là số, bạn có thể dùng hàm =vnd(left(A1),len(A1)-4).
Ko có máy tính để test thử.

mình thử rùi không được. trước mình dùng AccHelper có phần optios để sửa. nhưng giờ nó không cho sửa nữa dù làm mọi cách mình biết. mình làm BẢO HIỂM Y TẾ không được ghi chữ chẵn
 
Bạn test lại ct ở bài # 243 xem sao
 
Được rùi. cảm ơn bạn. nhưng cho mình hỏi dùng add-in Acchelper sao không bỏ được chữ chẵn, mặc dù trước đó mình bỏ được
Tôi cũng ko rõ.. mặc định của tác giả là thế rồi.. muốn thay đổi thì mình phải tự chế thôi bạn...
 
Mình lội hết các page mà vẫn không thấy cách bỏ dấu phẩy & chữ "chẵn"?
Mình dùng hàm vnd, font unicode
Ai chỉ mình với!
 
Mình dùng excel 2010 trên window 7 thì coppy vào như thế nào vậy bạn? tải về rồi mà không biết làm thế nào?
 
Lần chỉnh sửa cuối:
Mình dùng excel 2010 trên window 7 thì coppy vào như thế nào vậy bạn? tải về rồi mà không biết làm thế nào?

Mở file "doiso" bạn mới tải về, lưu lại dưới dạng Excel Add-In vào chỗ nào cũng được.
Rồi đóng lại, tới nơi bạn lưu file "doiso.xla" bạn mới tạo rồi copy.
Sau đó, mở cửa sổ Excel mới, vào tab Developer chọn Add-Ins, nhìn bên phải cửa sổ mới mở chọn Browse...
ở đây sẽ mở ra cửa sổ mới AddIns, bạn click chuột phải & paste "doiso.xla" vào đây (chính là paste cái file đổi số dạng Excel Add-In mà đã copy hồi nãy á). Rồi chọn lại file này luôn, click open.

Làm xong trong cửa sổ Add-Ins sẽ hiện ra tên add-ins available "doiso", bạn click vào ô vuông trước nó rồi ok là xài được.
 
em thử nguyên văn như anh/chị hướng dẫn, nhưng sao vẫn không được ạ?
 

File đính kèm

  • a1.jpg
    a1.jpg
    34.1 KB · Đọc: 151
cho mình hỏi giờ dùng excel 2010 thì cài số sang chữ sao nhỉ.
chỉ giúp mình với nhé
 
Em đang sử dụng File Quỹ TM rất tốt, nhưng khi em xoá Vietkey, cài Unikey thì phần đổi số thành chữ bị lỗi phông. Em đã tham khảo trên các diễn đàn cách khắc phục nhưng không được. Rất mong mọi người giúp đỡ.
 

File đính kèm

Em đang sử dụng File Quỹ TM rất tốt, nhưng khi em xoá Vietkey, cài Unikey thì phần đổi số thành chữ bị lỗi phông. Em đã tham khảo trên các diễn đàn cách khắc phục nhưng không được. Rất mong mọi người giúp đỡ.
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
Mã:
=UPPER(LEFT(docsouni(C12)))&RIGHT(docsouni(C12),LEN(docsouni(C12))-1)&" đồng ."
Bạn chép code của anh Duy Long vào là được thôi, or dùng addin cũng được mà
 
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
Mã:
=UPPER(LEFT(docsouni(C12)))&RIGHT(docsouni(C12),LEN(docsouni(C12))-1)&" đồng ."
Bạn chép code của anh Duy Long vào là được thôi, or dùng addin cũng được mà
Cám ơn Bạn! Nhưng bạn có thể hướng dẫn mình một cách chi tiết các bước thao tác được không.
 
Cám ơn Bạn! Nhưng bạn có thể hướng dẫn mình một cách chi tiết các bước thao tác được không.
Bạn mở file excel. Alt+F11. Insert module/ chép đoạn code trên vào máy. Tại ô có công thức bạn dùng ="Viết bằng chữ"&
Mã:
UPPER(LEFT(docsouni(C12)))&RIGHT(docsouni(C12),LEN(docsouni(C12))-1)&" đồng ."
rồi thêm công thức sau vào. Thay C12 bằng ô chứa số tiền của bạn thôi.
Mã:
="Viết bằng chữ: "&UPPER(LEFT(docsouni(H4)))&RIGHT(docsouni(H4),LEN(docsouni(H4))-1)&" đồng ."
Mình cũng hướng dẫn cụ thể rồi mà, bạn thử đi nhé
Ma file của bạn đang có protect sheet thì phải
 
Lần chỉnh sửa cuối:
Cám ơn Bạn rất nhiều, nhưng mình hơi kém khoản này, lại đang rất cần file này để làm việc. Bạn rảnh có thể chỉnh sửa giúp mình qua teamviewer được không.
 
Mình đã cố thực hiện theo bạn hướng dẫn, nhưng không được, có lẽ do mình thao tác không đúng. Thật phiền bạn quá, nhưng nếu được bạn có thể cho mình xin SĐT và giúp mình cài lại qua teamviewer được không. Cám ơn bạn nhiều.
 
Bạn làm được chưa. Cho mình mail minh gửi lại file cho , đỡ tốn quota
Rất cám ơn vì sự giúp đỡ nhiệt tình của bạn, nó đã thực sự giúp ích rất nhiều cho tôi. Cảm thấy rất vui khi được tham gia Diễn Đàn cùng mọi người. Chúc Diễn Đàn luôn hoạt động và phát triển tốt.
 
Em tìm không thấy add in phù hợp với yêu cầu cho mình, ai cho e xin add in với mẫu như sau:
123,004,005
Một trăm hai mươi ba triệu, không trăm lẻ bốn ngàn, không trăm lẻ năm đồng.


Em cám ơn nhiều!
 
Em tìm không thấy add in phù hợp với yêu cầu cho mình, ai cho e xin add in với mẫu như sau:
123,004,005
Một trăm hai mươi ba triệu, không trăm lẻ bốn ngàn, không trăm lẻ năm đồng.


Em cám ơn nhiều!
1) Tôi chưa thấy số nào như số của bạn (dấu phảy ngăn cách phần nghìn)
2) Hãy dùng add in của anh Nguyen duy tuan với công thức =VND(A1;;;;;TRUE) là ra kết quả đúng yêu cầu của bạn!
 
1) Tôi chưa thấy số nào như số của bạn (dấu phảy ngăn cách phần nghìn)
2) Hãy dùng add in của anh Nguyen duy tuan với công thức =VND(A1;;;;;TRUE) là ra kết quả đúng yêu cầu của bạn!

E có tìm được add in tự đếm không trăm, chỉnh sữa tý nhưng công thức gốc của nó lại đếm số lẻ bằng linh, e tìm mãi chả thay được từ linh bằng từ lẻ

Đây công thức của add in đó

Function dsa(conso, Optional doiso1 = " linh", Optional doiso2 As Byte = 0) As Stringdoiso1 = " " & Trim(doiso1)
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
dsa = ""
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 = doiso1
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 dsa = "kh«ng" Else dsa = Dau & Trim(DocSo)
Else
dsa = conso
End If
If doiso2 = 0 Then dsa = UCase(Left(dsa, 1)) & Mid(dsa, 2)
If dsa <> "" Then dsa = dsa & " " & "®ång ch½n./"
End Function
'===============================
Function dsu(conso, Optional doiso1 = " linh", Optional doiso2 As Byte = 0) As String
doiso1 = " " & Trim(doiso1)
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" & ",", " ngàn" & ",", " t" & ChrW(7927))
'Stop
If Trim(conso) = "" Then
dsu = ""
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 = doiso1
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 dsu = "kh" & ChrW(244) & "ng" Else dsu = Dau & Trim(DocSo)
Else
dsu = conso
End If
If doiso2 = 0 Then dsu = UCase(Left(dsu, 1)) & Mid(dsu, 2)
If dsu <> "" Then dsu = dsu & " " & ChrW(273) & ChrW(7891) & "ng."
End Function
 
To Chất Độc Lẻ và linh tìm trên GPE nhiều lắm mà --=0 Bạn Làm biếng tìm hay sao ấy
 
Cả nhà ở cho em hỏi, mấy cái add-In đổi số sang chữ này có cái nào dành cho Excel cài trên Mac không. Cho em với!!!
 
Cả nhà ở cho em hỏi, mấy cái add-In đổi số sang chữ này có cái nào dành cho Excel cài trên Mac không. Cho em với!!!
1) Mac có khác quá nhiều so với Win không bạn?
2) Tôi nghĩ add in "đổi số sang chữ" chỉ dùng trong excel thì trên bất cứ hệ điều hành nào cũng hoạt động. Đó là 1 thành phần của excel.
Không lẽ người viết hệ điều hành Mac chỉ cho phép một số phần mềm của riêng họ hoạt động trên Mac. Đó là tính chất "cục bộ". Nếu đúng thì gỡ bỏ Mac ngay và luôn đi bạn để chuyển sang hệ điều hành thông dụng là Win.
 
E có tìm được add in tự đếm không trăm, chỉnh sữa tý nhưng công thức gốc của nó lại đếm số lẻ bằng linh, e tìm mãi chả thay được từ linh bằng từ lẻ

Đây công thức của add in đó
Chắc bạn người miền nam rồi. Đọc chuẩn ngữ pháp tiếng Việt thì phải là "linh" chứ bạn.
Nhân tiện đào mồ cái topic này, gửi bà con add-in đọc số font unicode chuẩn ngữ pháp tiếng Việt. Cụ tỷ như sau:
Hàng trăm =0 thì đọc "không trăm"
Hàng chục =0 thì đọc "linh"
Hàng đơn vị =5 mà hàng chục <>0 thì đọc là "lăm"
Hàng đơn vị =1 mà hàng chục >1 thì đọc là "mốt"
Hàng đơn vị =4 mà hàng chục <>1 thì đọc là "tư"
 

File đính kèm

Chắc bạn người miền nam rồi. Đọc chuẩn ngữ pháp tiếng Việt thì phải là "linh" chứ bạn.

Cái vụ này phải xem lại nha!
Tôi thì chẳng nghe ai nói chữ "LINH" là chuẩn ngữ pháp cả
Tôi cũng nghe nhiều người miền Bắc đọc "lăm" là "nhăm" đấy nhé
 
Cái vụ này phải xem lại nha!
Tôi thì chẳng nghe ai nói chữ "LINH" là chuẩn ngữ pháp cả
Tôi cũng nghe nhiều người miền Bắc đọc "lăm" là "nhăm" đấy nhé
Theo em làm như #270 là chuẩn nhất.
Ví dụ: 105708501 sẽ đọc là Một trăm lẻ năm triệu bảy trăm lẻ tám nghìn năm trăm lẻ một đồng.
Phải không bác?
 
Theo em làm như #270 là chuẩn nhất.
Ví dụ: 105708501 sẽ đọc là Một trăm lẻ năm triệu bảy trăm lẻ tám nghìn năm trăm lẻ một đồng.
Phải không bác?
Theo mình thì LẺ hay LINH đều được, tùy theo vùng miền... nhưng chưa ai dám nói cái nào là CHUẨN NGỮ PHÁP cả
Bàn một hồi, có ông Bộ trưởng nào đó tình cờ ghé qua GPE đọc được lại cắc cớ đề xuất bỏ LẺ lấy LINH, khi ấy SỐ LẺ bắt đọc là SỐ LINH, LẺ LOI thành LINH LOI... thì điếc luôn
Ẹc... Ẹc... --=0
 
Theo mình thì LẺ hay LINH đều được, tùy theo vùng miền... nhưng chưa ai dám nói cái nào là CHUẨN NGỮ PHÁP cả
Bàn một hồi, có ông Bộ trưởng nào đó tình cờ ghé qua GPE đọc được lại cắc cớ đề xuất bỏ LẺ lấy LINH, khi ấy SỐ LẺ bắt đọc là SỐ LINH, LẺ LOI thành LINH LOI... thì điếc luôn
Ẹc... Ẹc... --=0
Chắc ông đó là fan của "Nhật ký Vàng Anh" rồi.
 
Cái vụ này phải xem lại nha!
Tôi thì chẳng nghe ai nói chữ "LINH" là chuẩn ngữ pháp cả
Tôi cũng nghe nhiều người miền Bắc đọc "lăm" là "nhăm" đấy nhé
Tên em mà là "Lẻ" thì chắc em cũng ủng hộ cái chữ "lẻ" là chuẩn ngữ pháp đấy!! Cơ mà em tên Linh bác ạ!! Có một chút thiên vị!!
P/s: Cái vụ đọc số này em học từ ngày cấp 1, thầy cô dạy thì chắc là chuẩn rồi!
 
Sorry các bạn, post nhầm file đổi số cho VNI
Đây là bản đổi file cho font Unicode

bạn ơi, mình rất cảm ơn chia sẻ của bạn và bạn có thể giúp mình theo cách như này được ko ạ
ví dụ dãy số của mình là : 178.987.766.888, đơn vị tính trong bảng là 1.000 đồng thì kết quả sẽ thành: 178 nghìn 987 tỷ, 766 triệu, 888 nghìn đồng.
Cảm ơn các bạn rất nhiều ạ
 
Bài viết của bạn rất hay, mình đã làm được rồi, nhưng font không đọc được, dù mình đã tải bản full đầy đủ rồi, nguyên nhân là sao vậy ban?
 
Hàm đổi số ở post số 2 tác giả post lên hình như bị lỗi.
Với các con số sau kết quả cho ra hình như là không đúng:
[TABLE="width: 802"]
[TR]
[TD="align: center"]#VALUE![/TD]
[TD="align: right"]-0.3[/TD]
[/TR]
[TR]
[TD="align: center"]#VALUE![/TD]
[TD="align: right"]-1.1[/TD]
[/TR]
[TR]
[TD="align: center"]#VALUE![/TD]
[TD="align: right"]-99[/TD]
[/TR]
[TR]
[TD]Mười tỷ, một đồng chẵn[/TD]
[TD="align: right"]10000000001[/TD]
[/TR]
[/TABLE]
Cái mười tỉ lẻ một đồng "chẵn" thì có thể là do cách đọc của tác giả, nhưng số âm bị lỗi hết thì phải.
[TABLE="width: 788"]
[TR]
[TD="width: 788"]Mình chế thử một cái các bạn test thử xem có được không
Cách dùng:
Cài addin vào sau đó tại ô cần đổi gõ dạng sau:
=bangchu(-999999999999999,"Yên Nhật, "xu", "lẻ")
=> Âm chín trăm chín mươi chín ngàn tỷ, chín trăm chín mươi chín tỷ, chín trăm chín mươi chín triệu, chín trăm chín mươi chín ngàn, chín trăm chín mươi chín Yên Nhật

=bangchu(B4,"Yên Nhật", "xu", "lẻ") trong đó ô B4 = -100000001.01[/TD]
[/TR]
[/TABLE]
=> Âm một trăm triệu, không trăm lẻ một Yên Nhật, một xu
nếu chỉ gõ =bangso(so_can_doi) thì mặc định đơn vị là "đồng", "xu", "lẻ" -\\/.
 

File đính kèm

Lần chỉnh sửa cuối:
Đâ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


Em đang dùng đoạn code này, GPE chỉ giúp em là em muốn sửa kết quả
"một trăm triệu đồng/."
thành
"Một trăm triệu đồng chẵn /." chỉ sửa ntn ah
 

File đính kèm

add-in này hay nhưng mà có cách nào đổi nghàn thành nghìn được không mọi người?
 
em muốn đồi chữ ''ngàn'' thành ''nghìn'' trong hàm sau thì phải đổi như nào ah? cảm ơn anh chị!
Function VNDUni(baonhieu)
' Tien Viet tieng Viet Font Unicode


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 baonhieu = 0 Then
KetQua = "Kh" & ChrW$(244) & "ng " & ChrW$(273) & ChrW$(7891) & "ng"
Else
If Abs(baonhieu) >= 1E+15 Then
KetQua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n - H" & ChrW$(224) & "m " & ChrW$(273) & ChrW$(7893) & "i s" & ChrW$(7889) & " ra ch" & ChrW$(7919) & " Vi" & ChrW$(7879) & "t Nam; font ch" & ChrW$(7919) & " .Vntime - Copyright by MaiKa of AQN (0953-357-988)"
Else
If baonhieu < 0 Then
KetQua = ChrW$(194) & "m" & Space(1)
Else
KetQua = Space(0)
End If
SoTien = Format(Abs(baonhieu), "##############0.00")
SoTien = Right(Space(15) & SoTien, 18)
Hang = Array("None", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
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$(7849) & "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" & ChrW$(432) & ChrW$(7901) & "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 = "l" & ChrW$(7867) & 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, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
KetQua = KetQua & Chu
End If
Next I
End If
End If
VNDUni = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function
 
anh chị giúp em với ah. em đang cần gấp lắm.
 
em muốn đồi chữ ''ngàn'' thành ''nghìn'' trong hàm sau thì phải đổi như nào ah? cảm ơn anh chị!
Function VNDUni(baonhieu)
' Tien Viet tieng Viet Font Unicode


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 baonhieu = 0 Then
KetQua = "Kh" & ChrW$(244) & "ng " & ChrW$(273) & ChrW$(7891) & "ng"
Else
If Abs(baonhieu) >= 1E+15 Then
KetQua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n - H" & ChrW$(224) & "m " & ChrW$(273) & ChrW$(7893) & "i s" & ChrW$(7889) & " ra ch" & ChrW$(7919) & " Vi" & ChrW$(7879) & "t Nam; font ch" & ChrW$(7919) & " .Vntime - Copyright by MaiKa of AQN (0953-357-988)"
Else
If baonhieu < 0 Then
KetQua = ChrW$(194) & "m" & Space(1)
Else
KetQua = Space(0)
End If
SoTien = Format(Abs(baonhieu), "##############0.00")
SoTien = Right(Space(15) & SoTien, 18)
Hang = Array("None", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
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$(7849) & "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" & ChrW$(432) & ChrW$(7901) & "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 = "l" & ChrW$(7867) & 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, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
KetQua = KetQua & Chu
End If
Next I
End If
End If
VNDUni = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function
Chổ này nè bạn:
Mã:
[COLOR=#000000]Doc = Array("None", "ng" & ChrW$(224) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", ChrW$(273) & [/COLOR]
Bạn đổi thành
Mã:
[COLOR=#000000]Doc = Array("None", "ngh" & ChrW$(236) & "n t" & ChrW$(7927), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ngh" & ChrW$(236) & "n", ChrW$(273) & [/COLOR]
 
dạ em cảm ơn nhiều ah. từ sáng tới giờ e tìm nhiều hàm add-in đọc số rồi mà chưa ưng được cái nào có thể giải quyết đc vấn đề tại đơn vị. em vẫn muốn dùng hàm trên nhưng có nhiều chỗ e không biết phải sửa như nào cho đúng.
vd: "90.018.000" với hàm trên sẽ đọc thành:"Chín mươi triệu mười tám nghìn đồng".
mà theo đơn vị em bắt phải ghi rõ: "Chín mươi triệu, không trăm mười tám nghìn, không trăm đồng".
Vấn đề đặt ra là em muốn thêm dấu "," và "không trăm" trước đơn vị nghìn và đồng. em rất mong nhận được sự giúp đỡ của anh chị trên diễn đàn.
 
Lần chỉnh sửa cuối:
rất nhiều tiện ích hay mà giờ em mới biết. về phần đọc số vnd, với những giá trị âm thì hàm vẫn không đọc được là âm.
vd: "(10.038.100)" => hàm vẫn đọc về giá trị là: "mười triệu, không trăm ba mươi tám nghìn. một trăm đồng"
em muốn là nó tự đọc là " Âm mười triệu, không trăm ba mươi tám nghìn. một trăm đồng".
 
rất nhiều tiện ích hay mà giờ em mới biết. về phần đọc số vnd, với những giá trị âm thì hàm vẫn không đọc được là âm.
vd: "(10.038.100)" => hàm vẫn đọc về giá trị là: "mười triệu, không trăm ba mươi tám nghìn. một trăm đồng"
em muốn là nó tự đọc là " Âm mười triệu, không trăm ba mươi tám nghìn. một trăm đồng".
Cảm ơn bạn đã góp ý, mình vừa thêm chức năng đọc số âm cho bạn rồi đấy, có thể xem lại. À mà bạn muốn góp ý cho Add-Ins của mình thì vào link sau này góp ý, chứ bạn góp ý ở đây thì chủ topic này sẽ....:=\+ :=\+ :=\+
 
Mình mò mẫn tới trang 12 thì hoa cả mắt, mình nhờ các bạn giúp bỏ từ "chẳn" trong cái đổi số này, cảm ơn các bạn nhiều
VD: 456.789,98 nó đọc là "bốn trăm năm mươi sáu triệu, bảy trăm chín mươi ngàn đồng chẵn"
mình muốn nó đọc là " bốn trăm năm mươi sáu triệu, bảy trăm tám mươi chín ngàn đồng", Không cần độc 2 số lẻ ở sau và không cần từ chẳn
Ai giúp được mình cảm ơn nhiều
 

File đính kèm

Lần chỉnh sửa cuối:

Bài viết mới nhất

Back
Top Bottom