thehungqnu
Thành viên mới

- Tham gia
- 12/10/07
- Bài viết
- 35
- Được thích
- 16
Các bạn có thể cho minh đoạn VB đổi số sang chữ 3 số VD 275 thành Hai bảy lăm
Gửi tặng bạn AddIns này nhé.thehungqnu đã viết:Các bạn có thể cho minh đoạn VB đổi số sang chữ 3 số VD 275 thành Hai bảy lăm
Rất cám ơn ongtrungduc, addin của bạn chạy rất tốt, bạn có thể upload một addin khác đồi số thành chử unicode bằng tiếng Anh không, rất cám ơn sự chia sẽ ừng dụng của bạnongtrungducmx25 đã viết:mình gởi thêm cho bạn bản unicode nhé
http://www.giaiphapexcel.com/forum/showthread.php?t=435
Mình làm đúng như vậy nhưng không chuyển ra chữ được. Mình đang sử dụng Office 2003. Làm sao bây giờ?ongtrungducmx25 đã viết:bạn gõ vào là =vnduni(852394) sau đó là ok hoặc =vnduni(A1) thì ok là nó tu chuyển đổi thế là xong nhé chúc bạn thành công
Cách sử dụng như thế nào bạn ơi. Mình chưa sử dụng bao giờ cảongtrungducmx25 đã viết:mình gởi thêm cho bạn bản unicode nhé
Đây là 1 add-ins, nó sẽ tạo thêm hàm trong excel, theo như add-ins của ongtrungducmx25 thì sẽ thêm hàm là vnduni(), khi dùng hàm này nó sẽ đổi số ra chữ, đại loại là thế hy vọng bạn hiểukhanhnqfast đã viết:Cách sử dụng như thế nào bạn ơi. Mình chưa sử dụng bao giờ cả
Mình đã chỉnh cái AddIn trên. Các bạn dùng thử xem.Nguyên văn bởi tienbts
khi đổi số có giá trị lớn hơn giá trị tỷ thì lại lỗi font, hiện lên chữ tĐ. Có cách nào khắc phục không chỉ giúp mình với nhé.
Function danvnd(ByVal NumCurrency As Currency) As String If NumCurrency = 0 Then danvnd = "Kh«ng ®óng" Exit Function End If If NumCurrency > 922337203685477# Then ' S? l?n nh?t c?a lo?i CURRENCY danvnd = "Không d?i du?c s? l?n hon 922,337,203,685,477" Exit Function End If '------------------------------------------------- Static CharVND(9) As String, BangChu As String, I As Integer Dim SoLe, SoDoi As Integer, PhanChan, Ten As String CharVND(1) = "mét" CharVND(2) = "hai" CharVND(3) = "ba" CharVND(4) = "bèn" CharVND(5) = "n¨m" CharVND(6) = "s¸u" CharVND(7) = "bÈy" CharVND(8) = "t¸m" CharVND(9) = "chÝn" '------------------------------------------------- SoLe = Int((NumCurrency - Int(NumCurrency)) * 100) '2 kí s? l?I = 1 PhanChan = Trim$(Str$(Int(NumCurrency))) While Len(PhanChan) > 0 [SIZE=4][COLOR=red][B]SelectCase[/B][/COLOR][/SIZE] I Case 1 ' DongDong = Val(Right$(PhanChan, 3)) PhanChan = Left$(PhanChan, Len(PhanChan) - Len(Trim$(Str$(Dong)))) Case 2 ' NganNgan = Val(Right$(PhanChan, 3)) PhanChan = Left$(PhanChan, Len(PhanChan) - Len(Trim$(Str$(Ngan)))) Case 3 ' TrieuTrieu = Val(Right$(PhanChan, 3)) PhanChan = Left$(PhanChan, Len(PhanChan) - Len(Trim$(Str$(Trieu)))) Case 4 ' TyTy = Val(Right$(PhanChan, 3)) PhanChan = Left$(PhanChan, Len(PhanChan) - Len(Trim$(Str$(Ty)))) Case 5 ' Ngan TyNganTy = Val(Right$(PhanChan, 3)) PhanChan = Left$(PhanChan, Len(PhanChan) - Len(Trim$(Str$(NganTy)))) End Select I = I + 1 Wend If NganTy = 0 And Ty = 0 And Trieu = 0 And Ngan = 0 And Dong = 0 Then BangChu = "Kh«ng ®óng " I = 5 Else BangChu = "" I = 0 End If While I End Function
Mình đã có sẵn hàm đọc số ra chữ rất tốt, nếu bạn cần, mình sẽ gởi cho và chỉ cho cach sử dụng. Rất tiện lợi vì trong công việc thường quên sửa đoạn "Bằng chữ:....", nhất là khi đưa cho xếp ký rồi, phát hiện ra, phải làm và xin ký lại thì rất khó chịu! Liên hệ dinhleqn@yahoo.comHiện nay em đang làm kế toán và phải làm nhiều bảng kê bằng Excel, nhiều khi do sơ suất đọc nhầm số vì vậy em muốn anh chị hãy cho em biết có tiện ích nào đọc số thành chữ thật tốt.
có thể đọc như sau: 4012.46 thành Bốn nghìn không trăm mười hai phảy bốn mươi sáu.
Em xin chân thành cảm ơn sự giúp đỡ của tất cả các anh chị!
Đây là một softwear bằng macro for Excel. Tiện ích của nó là đổi số thành chữ gồm 2 hàm:
=DoisoV(số cần đổi) - kết quả cho đọc số ra Tiếng Việt
Vd: =DoisoV(123456): (Bằng chữ: một trăm hai mươi ba ngàn, bốn trăm năm mươi sáu đồng)
=DoisoE(số cần đổi) - kết quả cho đọc số ra Tiếng Anh
Vd: =DoisoE(123456): (Says: one hundred twenty-three thousand, four hundred fifty-six.)
HDSD: Để hai hàm đổi số trên hoạt động như một hàm của excel (ví dụ tương tự như hàm cos(), sin(), sum()) bạn làm tuần tự theo các bước sau:
1. Mở file excel vừa được dowload về
2. Save as thành file Add-Ins (đây là định dạng xla, nằm cuối cùng trong type của excel) thành một tên bất kì nào đó. Ví dụ là: doiso.xla
3. Vào menu: Tools\Add-Ins; bảng thông số Add-Ins hiện ra. Bạn click vào button "Browse..." Chọn file doiso.xla vừa save as. Lúc này trong bảng Add-Ins có thêm mục chọn với tên: doiso. Bạn lựa chọn nó bằng cách đánh dấu. Click vào Ok.
Từ lúc này trở đi trong Microsoft Excel của bạn có thêm 2 hàm đổi số thành chữ ở trên.
Đây là phần mềm free nên mong được mọi người hưởng ứng và đóng góp ý kiến, sáng kiến trên diễn đàn này.
sao minh không load được theo hướng dẫn của bạn nhỉ?Gửi tặng bạn AddIns này nhé.
Tôi thấy vẫn sử dụng tốt đấy chứ, không giới hạn trên 1000 tỷ như bạn nói. Bạn thử với ADD-IN dưới đây làm ví dụ nhé. ThânCác hàm đọc số thành chữ hiện nay thường chỉ đếm đến nhỏ hơn 1.000 tỷ. Em muốn viết số hàm đó lên đến 10.000 tỷ thì làm thế nào mong được giúp đỡ
Không biết bạn dùng thế nào mà bảo không được nhỉ. Thử cái này xem sao:chán thế? em tải bao nhiêu cái về mà không dùng được?bác nào dùng được rồi bản ngon? gủi em xin với (cho xin cả hứuowng dẫn cụ thể để em gui cho mấy em cùng phòng ) tuanduongthanh@yahoo.com cảm ơn các bac nhieu?
=DocSo(Number,Code)
Nếu bạn sử dụng không được do không biết dùng Add-in thì đó là do bạn. Có thể tìm cách nạp Add-in trên diễn đàn.Number: Số cần đọc
Code: Bảng mã, có các tùy chọn sau:
+ 1: Mã Unicode
+ 2: Mã VNI Windown
+ 3: TCVN3 (ABC)
Đoạn code bác post lên chưa hoàn chỉnh lắm. Thiếu phần đầu và phần cuối. Thiếu hàm UnicodeChar. Nếu đoạn code trên là của một hàm chuyển đổi thì phải chỉnh lại như sau:Nguyên văn bởi le tin
Chào các bạn
Đoạn code này dịch số ra chữ mình lấy trên diễn đàn(Xin lỗi không nhớ tên tác giả) , nhưng lỗi phần thập phân . VD : ...,1 -> dịch là ... , chín xu
...,21 -> dịch là ... , hai mươi xu
Nhờ các bạn chỉnh giúp ( nhớ đánh dấu chỗ sửa)
Cảm ơn
[COLOR="Red"][B]Function vnd(ByVal NumCurrency As Currency) As String[/B][/COLOR]
On Error Resume Next
Static CharVND(9) As String, BangChu As String, I As Integer
Dim SoLe, SoDoi As Integer, PhanChan, Ten As String
Dim DonViTien As String, DonViLe As String
Dim NganTy As Integer, Ty As Integer, Trieu As Integer, Ngan As Integer
Dim Dong As Integer, Tram As Integer, Muoi As Integer, DonVi As Integer
DonViTien = ";111;1ED3;6E;67" ' d?ng
DonViLe = ";78;75" ' xu
If [B][COLOR="red"]NumCurrency[/COLOR][/B]= 0 Then
[B][COLOR="red"]vnd[/COLOR][/B] = UnicodeChar(";4B;68;F4;6E;67;20" & DonViTien)
Exit Sub
End If
If [S46] > 922337203685477# Then ' S? l?n nh?t c?a lo?i CURRENCY
[i47] = UnicodeChar(";4B;68;F4;6E;67;20;111;1ED5;69;20;111 ;1B0;1EE3;63;20;73" & ";1ED1;20;6C;1EDB;6E;20;68;1A1;6E;20;39;32;32;2C;3 3;33;37" & ";2C;32;30;33;2C;36;38;35;2C;34;37;37")
Exit Sub
End If
CharVND(1) = ";6D;1ED9;74" ' m?t
CharVND(2) = ";68;61;69" ' hai
CharVND(3) = ";62;61" ' ba
CharVND(4) = ";62;1ED1;6E" ' b?n
CharVND(5) = ";6E;103;6D" ' nam
CharVND(6) = ";73;E1;75" ' sáu
CharVND(7) = ";62;1EA3;79" ' b?y
CharVND(8) = ";74;E1;6D" ' tám
CharVND(9) = ";63;68;ED;6E" ' chín
SoLe = Int(([S46] - Int([S46])) * 100) ' 2 kí s?
PhanChan = Trim$(str$(Int([S46])))
PhanChan = Space(15 - Len(PhanChan)) + PhanChan
NganTy = Val(Left(PhanChan, 3))
Ty = Val(Mid$(PhanChan, 4, 3))
Trieu = Val(Mid$(PhanChan, 7, 3))
Ngan = Val(Mid$(PhanChan, 10, 3))
Dong = Val(Mid$(PhanChan, 13, 3))
If NganTy = 0 And Ty = 0 And Trieu = 0 And Ngan = 0 And Dong = 0 Then
BangChu = ";6B;68;F4;6E;67;20" + DonViTien + ";20"
I = 5
Else
BangChu = ""
I = 0
End If
'-----------------------------------------------------
' B?t d?u d?i
'-----------------------------------------------------
While I <= 5
Select Case I
Case 0
SoDoi = NganTy
Ten = ";6E;67;E0;6E;20;74;1EF7" ' ngàn t?
Case 1
SoDoi = Ty
Ten = ";74;1EF7" ' t?
Case 2
SoDoi = Trieu
Ten = ";74;72;69;1EC7;75" ' tri?u
Case 3
SoDoi = Ngan
Ten = ";6E;67;E0;6E" ' ngàn
Case 4
SoDoi = Dong
Ten = DonViTien ' d?ng
Case 5
SoDoi = SoLe
Ten = DonViLe ' xu
End Select
If SoDoi <> 0 Then
Tram = Int(SoDoi / 100)
Muoi = Int((SoDoi - Tram * 100) / 10)
DonVi = (SoDoi - Tram * 100) - Muoi * 10
If Right(BangChu, 3) = ";20" Then
BangChu = Left(BangChu, Len(BangChu) - 3)
End If
BangChu = BangChu + IIf(Len(BangChu) = 0, "", ";2C;20") + _
IIf(Tram <> 0, Trim(CharVND(Tram)) + ";20;74;72;103;6D;20", "")
If Muoi = 0 And Tram <> 0 And DonVi <> 0 Then
BangChu = BangChu + ";6C;1EBB;20"
Else
If Muoi <> 0 Then
BangChu = BangChu + IIf(Muoi <> 0 And Muoi <> 1, _
Trim(CharVND(Muoi)) + ";20;6D;1B0;1A1;69;20", ";6D;1B0;1EDD;69;20")
End If
End If
If Muoi <> 0 And DonVi = 5 Then
BangChu = BangChu + ";6C;103;6D;20" + Ten + ";20"
Else
If Muoi > 1 And DonVi = 1 Then
BangChu = BangChu + ";6D;1ED1;74;20" + Ten + ";20"
Else
BangChu = BangChu + IIf(DonVi <> 0, Trim(CharVND(DonVi)) + ";20" + Ten, Ten) + ";20"
End If
End If
Else
BangChu = BangChu + IIf(I = 4, DonViTien + "", "")
End If
I = I + 1
Wend
If SoLe = 0 Then
BangChu = BangChu + IIf(Right(BangChu, 3) = ";20", "", ";20") + ";63;68;1EB5;6E"
End If
'Ð?i sang ti?ng Vi?t Unicode
BangChu = UnicodeChar(BangChu)
' Ð?i ch? cái d?u tiên thành ch? hoa
Mid$(BangChu, 1, 1) = UCase$(Mid$(BangChu, 1, 1))
[B][COLOR="red"]vnd = BangChu[/COLOR][/B]
[B][COLOR="red"]End Function[/COLOR][/B]
Lúc chưa có tác giả trả lời, bạn thử code này xemBạn Ongtrungducmx25 ơi! Cám ơn bạn đã cho tôi hàn VND như tôi không thể thêm chữ đồng vào cuối dòng được tôi sai chỗ nào chỉ cho tôi với . ( VD: =VND( 1579) nó chỉ ra Một ngàn năm trăm bảy chín thôi mà không có chữa đồng vào
Bạn Ongtrungducmx25 ơi! Cám ơn bạn đã cho tôi hàn VND như tôi không thể thêm chữ đồng vào cuối dòng được tôi sai chỗ nào chỉ cho tôi với . ( VD: =VND( 1579) nó chỉ ra Một ngàn năm trăm bảy chín thôi mà không có chữa đồng vào
Mình đã chỉnh cái AddIn trên. Các bạn dùng thử xem.
Nghĩa là bạn có 1 cột gồm rất nhiều các con số (ví dụ cột A). Bạn muốn đổi tất cả số ở cột A ra chữ?Em cho em hỏi với ạ.
Hiện nay em đã đổi được từ chữ sang số, em dùng addins, nhưng em chỉ đổi được từng ô một thôi ạ.
có cách nào copy để đổi được số của cả 1 cột sang chữ ko ạ?
Em xin chân thành cảm ơn
Chào anh, anh giúp em sửa chữ "lẻ" thành chữ "Linh" và bỏ đi dấu "." cuối cùng khi đọc số được không ạ!Không biết bạn dùng thế nào mà bảo không được nhỉ. Thử cái này xem sao:
Cú pháp:
Trong đó:Mã:=DocSo(Number,Code)
Nếu bạn sử dụng không được do không biết dùng Add-in thì đó là do bạn. Có thể tìm cách nạp Add-in trên diễn đàn.
Bạn thử sửa code lại như sau nhé:Chào anh, anh giúp em sửa chữ "lẻ" thành chữ "Linh" và bỏ đi dấu "." cuối cùng khi đọc số được không ạ!
Function DocSo(Number, Font) As String
Dim MyArray, tam
Dim Str As String, Str1 As String
Str = Format(Fix(Abs(Number)), "000000000000000000")
Select Case Font
Case 1
'MyArray = 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 ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "t" & ChrW(7927) & ", ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "", "tr" & ChrW(259) & "m ", "m" & ChrW(432) & ChrW(417) & "i ", "không " & "m" & ChrW(432) & ChrW(417) & "i" & " không ", "không " & "m" & ChrW(432) & ChrW(417) & "i", "l" & ChrW(7867), "m" & ChrW(432) & ChrW(417) & "i" & " không", "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " n" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i" & " l" & ChrW(259) & "m", "m" & ChrW(7897) & "t " & "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(7901) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7897) & "t", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7889) & "t", "Âm ", ChrW(273) & ChrW(7891) & "ng ", "và ", "xu ")
MyArray = 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 ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "t" & ChrW(7927) & ", ", "tri" & ChrW(7879) & "u, ", "ngàn, ", "", "tr" & ChrW(259) & "m ", "m" & ChrW(432) & ChrW(417) & "i ", "không " & "m" & ChrW(432) & ChrW(417) & "i" & " không ", "không " & "m" & ChrW(432) & ChrW(417) & "i", "linh", "m" & ChrW(432) & ChrW(417) & "i" & " không", "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " n" & ChrW(259) & "m", "m" & ChrW(432) & ChrW(417) & "i" & " l" & ChrW(259) & "m", "m" & ChrW(7897) & "t " & "m" & ChrW(432) & ChrW(417) & "i", "m" & ChrW(432) & ChrW(7901) & "i", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7897) & "t", "m" & ChrW(432) & ChrW(417) & "i" & " m" & ChrW(7889) & "t", "Âm ", ChrW(273) & ChrW(7891) & "ng ", "và ", "xu ")
Case 2
MyArray = Array("khoâng ", "moät ", "hai ", "ba ", "boán ", "naêm ", "saùu ", "baûy ", "taùm ", "chín ", "trieäu, ", "ngaøn, ", "tyû, ", "trieäu, ", "ngaøn, ", "", "traêm ", "möôi ", "khoâng möôi khoâng ", "khoâng möôi", "leû", "möôi khoâng", "möôi", "möôi naêm", "möôi laêm", "moät möôi", "möôøi", "möôi moät", "möôi moát", "AÂm ", "ñoàng ", "vaø ", "xu ")
Case 3
MyArray = Array("kh«ng ", "mét ", "hai ", "ba ", "bèn ", "n¨m ", "s¸u ", "b¶y ", "t¸m ", "chÝn ", "triÖu, ", "ngµn, ", "tû, ", "triÖu, ", "ngµn, ", "", "tr¨m ", "m¬i ", "kh«ng m¬i kh«ng ", "kh«ng m¬i", "lÎ", "m¬i kh«ng", "m¬i", "m¬i n¨m", "m¬i l¨m", "mét m¬i", "mêi", "m¬i mét", "m¬i mèt", "¢m ", "®ång ", "vµ ", "xu ")
End Select
If Number = 0 Then
DocSo = MyArray(0)
Else
DocSo = ""
End If
For I = 1 To Len(Str)
If Left(Str, I) <> 0 And Mid(Str, (Int((I + 2) / 3) - 1) * 3 + 1, 3) <> 0 Then
DocSo = DocSo & MyArray(Mid(Str, I, 1)) & MyArray(-(9 + I / 3) * (I Mod 3 = 0) - (15 + I Mod 3) * (I Mod 3 <> 0))
ElseIf I = 9 And Mid(Str, 7, 3) = 0 And Left(Str, 6) <> 0 Then
DocSo = DocSo & MyArray(12)
End If
Next
DocSo = IIf(Number = 0, MyArray(0) & MyArray(30), "") & IIf(Fix(Number) <> 0, DocSo & MyArray(30), "") & IIf(Fix(Number) <> 0 And Fix(Number) <> Number, MyArray(31), "") & IIf(Fix(Number) <> Number, IIf(Abs(Number - Fix(Number)) < 0.1, "", MyArray(Left(Right(Format(Abs(Number), "#.00"), 2), 1)) & MyArray(17)) & MyArray(Right(Format(Number, "#.00"), 1)) & MyArray(32), "")
DocSo = Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(DocSo, MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)), ", " & MyArray(30), " " & MyArray(30)))
If Number < 0 Then
DocSo = MyArray(29) & DocSo
End If
'DocSo = UCase(Left(DocSo, 1)) & Mid(DocSo, 2) & "."
DocSo = UCase(Left(DocSo, 1)) & Mid(DocSo, 2)
End Function