Đổi số ra chữ

Liên hệ QC

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
 
tôi đã tải VNduni(831689) về rồi, nhưng khi mở file excel và mở kèm file vnduni mới tải về (mở cùng một lúc) thì nó mới chạy tốt. nhưng nếu mở 1 file excel thì nó không chịu dịch số và không lưu được. vậy phải làm sao bây giờ
 
Upvote 0
Cá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 đỡ
 
Upvote 0
Cá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 đỡ
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ân
 

File đính kèm

  • HoTroTiengViet VBA.rar
    23.4 KB · Đọc: 233
Upvote 0
Nhờ sửa Code đọc số ra chữ

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

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 [S46] = 0 Then
[i47] = 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;33;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))
 
Upvote 0
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?
 
Upvote 0
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?
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:
Mã:
=DocSo(Number,Code)
Trong đó:
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)
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.
 

File đính kèm

  • DocSo.rar
    15.6 KB · Đọc: 277
Upvote 0
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
Đ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:
Mã:
[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]
Và cần hàm UnicodeChar thì đoạn code trên mới chạy được.
 
Upvote 0
Mình cũng muốn đổi chữ ra số mà sao vào mấy file mà các bạn gửi mình tải về mà nó không đọc được.Fải làm sao cho nó chạy đây?giúp mình zới!!!!
 
Upvote 0
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
 
Upvote 0
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
Lúc chưa có tác giả trả lời, bạn thử code này xem
 
Upvote 0
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

Tại ô công thức, bạn thêm & " đồng."
 
Upvote 0
Gởi các bạn
Đổi số ra chữ bằng tiếng Anh
Tôi có vấn đề này nhờ các bạn chỉ dùm trên file excel: ví dụ
Cột A1: tôi nhập số liệu 2.34
Thì cột A 2: phải hiện chữ là two dollars and thirty four cents
Tương tự nếu tôi đổi số khác thì phải xuất hiện dòng chữ tiếng Anh tương tự
VD: A 1: 2.63 thì A 2: phải là two dollars and sixty two cents
Có ai biết chỉ giáo dùm làm thế nào thiết lập công thức trên cột A
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
ông làm ra chương trình chuyển đổi số ra chữ trong excel rất hay, làm thế nào để xác định được mã các ký tự vậy, còn 1 lỗi nhỏ nữa đó sửa nó lại luôn đi.
 
Upvote 0
Hôm truớc mình có tải về một Add-Ins đọc số nhưng không hài lòng lắm vì:
- VD số 2009 thì chỉ đọc là "hai ngàn chín đồng".
- VD số 2209 thì đọc là "hai ngàn lẻ chín đồng".
Mình đã sửa lại đoạn code và bây giờ có thể đọc số theo cách đọc chuẩn.
- VD 2009 đọc là "hai nghìn không trăm linh chín đồng".
Nhiều người trong miền nam quen dùng "ngàn" thay cho "nghìn", "lẻ" thay cho "linh".
Hàm sử dụng là =RN()
Xin up lên diễn đàn cả 2 cách đọc để mọi người tham khảo nhé!
 
Upvote 0
1452,2| Một ngàn bốn trăm năm mươi hai đồng ./. không trăm hai mươi xu
 
Upvote 0
Cảm ơn ongtrungducmx25 về các tập tin, nhưng bạn có thể giúp mình cách cài đặt vào máy tính không, mình không rành lắm
 
Upvote 0
Còn tôi thì lại là: ví dụ nhé
12345
tôi cài đạt rồi gõ:
VND(12345)&" đồng"
nhưng nó lại ra là mười hai nghìn ba trăm bốn lăm. đồng
Làm thế nào vậy các bạn
 
Upvote 0
anh có thế giúp em trường hợp này được không: một trăm nghìn.đồng
 
Upvote 0
Web KT
Back
Top Bottom