File chuyển số sang viết bằng chữ

  • Thread starter HyperVN
  • Ngày gửi
H

HyperVN

<b>Phu hót rác</b>
17/3/03
1,833
16
0
47
Hải Phòng
www.webketoan.vn
Tạo công thức chuyển số thành chữ trong Excel
Tạo một công thức người dùng trong Excel theo code dưới đây, mở một workbook, chọn Tool --> Macro --> Visual Basic Editor ->Insert ->Modules, gián phần công thức sau vào màn hình cập nhật.

------------------------------------------
Function CHUSO(so As Double) As String
Dim Chu As String, solop As Integer, so1 As Double, tg As Double
If so <= 0 Or so = Null Then
CHUSO = ""
End If
ReDim term(10) As String, lop(6) As Double, tlop(6) As String
term(1) = " mét"
term(2) = " hai"
term(3) = " ba"
term(4) = " bèn"
term(5) = " n¨m"
term(6) = " s¸u"
term(7) = " bÈy"
term(8) = " t¸m"
term(9) = " chÝn"
'-------------------
tlop(1) = ""
tlop(2) = " ngµn"
tlop(3) = " triÖu"
tlop(4) = " tû"
tlop(5) = " ngµn tû"
'----------------
so1 = so
solop = 1
Do While so1 > 0
tg = so1
so1 = Int(so1 / 1000)
lop(solop) = tg - so1 * 1000
solop = solop + 1
Loop
i = solop - 1
Chu = ""
Do While i > 0
so1 = lop(i)
If so1 > 0 Then
hangtram = so1 100
hangchuc = (so1 - hangtram * 100) 10
hangdonvi = so1 - (so1 10) * 10
If hangtram > 0 Then
'Chu so hang tram c¢ nghªa so1>=100
Chu = Chu + term(hangtram) + " tr¨m"
End If
'Xet chu so hang chuc
If hangchuc > 1 Then
Chu = Chu + term(hangchuc) + " m­¬i"
ElseIf hangchuc = 1 Then
Chu = Chu + " m­êi"
ElseIf hangchuc = 0 And so1 > 100 And hangdonvi <> 0 Then
Chu = Chu + " linh"
End If
' Xet ch§ s– h…ng ­ón v«
If hangdonvi <> 5 And hangdonvi <> 0 Then
Chu = Chu + term(hangdonvi)
ElseIf hangdonvi = 5 And hangchuc <> 0 Then
Chu = Chu + " l¨m "
ElseIf hangdonvi = 5 And hangchuc = 0 Then
Chu = Chu + " n¨m "
End If
Chu = Chu + tlop(i)
End If
' Xet lop ke tiep
i = i - 1
Loop
Chu = Trim(Chu)
If Chu <> "" Then
Chu = UCase(Left(Chu, 1)) & Right(Chu, Len(Chu) - 1)
End If
CHUSO = Chu
End Function
------------------------------------

(Ghi chú: chữ một hai ba bốn ... trên với mã Font TCVN, bạn có thể đổi lại theo yêu cầu)

Tiếp tục đóng cửa sổ Visual Basic Editor, quay về bảng tính Excel, ví dụ bây giờ tại ô A1 bạn có số 12345 cần chuyển thành chữ tại A2, hãy gõ vào A2 công thức =CHUSO(A1). (Lưu ý chọn Font chữ phù hợp).

Test this please.
 
Khóa học Quản trị dòng tiền
H

HyperVN

<b>Phu hót rác</b>
17/3/03
1,833
16
0
47
Hải Phòng
www.webketoan.vn
Cách khác thì phức tạp hơn nhiều, phải lập công thức hoán chuyển trong ô excel, vả lại cũng không hiệu quả bằng cách này, lỗi báo không dịch được có thể do VB editor của bộ office của bạn bị lỗi hoặc chưa được cài.
 
P

pnphuong

NHẪN
12/12/02
610
7
18
Hanoi
Originally posted by HyperVN@Apr 15 2003, 09:12 AM
hangtram = so1&nbsp; 100
hangchuc = (so1 - hangtram * 100)&nbsp; 10
hangdonvi = so1 - (so1&nbsp; 10) * 10
Hyper oi, phần này bị báo là Syntax Error khi dịch nên không thể thực hiện được đâu, bạn thử kiểm tra lại nhé!
 
H

HyperVN

<b>Phu hót rác</b>
17/3/03
1,833
16
0
47
Hải Phòng
www.webketoan.vn
hangtram = so1 100
hangchuc = (so1 - hangtram * 100) 10
hangdonvi = so1 - (so1 10) * 10

Ồ xin lỗi, các bạn sửa thành

hangtram = so1 - 100
hangchuc = (so1 - hangtram * 100) - 10
hangdonvi = so1 - (so1 - 10) * 10
 
H

HyperVN

<b>Phu hót rác</b>
17/3/03
1,833
16
0
47
Hải Phòng
www.webketoan.vn
Mã:
Function CHUSO(so As Double) As String
Dim Chu As String, solop As Integer, so1 As Double, tg As Double
If so <= 0 Or so = Null Then
CHUSO = ""
End If
ReDim term(10) As String, lop(6) As Double, tlop(6) As String
term(1) = " mét"
term(2) = " hai"
term(3) = " ba"
term(4) = " bèn"
term(5) = " n¨m"
term(6) = " s¸u"
term(7) = " bÈy"
term(8) = " t¸m"
term(9) = " chÝn"
'-------------------
tlop(1) = ""
tlop(2) = " ngµn"
tlop(3) = " triÖu"
tlop(4) = " tû"
tlop(5) = " ngµn tû"
'----------------
so1 = so
solop = 1
Do While so1 > 0
tg = so1
so1 = Int(so1 / 1000)
lop(solop) = tg - so1 * 1000
solop = solop + 1
Loop
i = solop - 1
Chu = ""
Do While i > 0
so1 = lop(i)
If so1 > 0 Then
hangtram = so1 - 100
hangchuc = (so1 - hangtram * 100) * 10
hangdonvi = so1 - (so1 - 10) * 10
If hangtram > 0 Then
'Chu so hang tram c¢ nghªa so1>=100
Chu = Chu + term(hangtram) + " tr¨m"
End If
'Xet chu so hang chuc
If hangchuc > 1 Then
Chu = Chu + term(hangchuc) + " m­¬i"
ElseIf hangchuc = 1 Then
Chu = Chu + " m­êi"
ElseIf hangchuc = 0 And so1 > 100 And hangdonvi <> 0 Then
Chu = Chu + " linh"
End If
' Xet ch§ s– h…ng ­ón v«
If hangdonvi <> 5 And hangdonvi <> 0 Then
Chu = Chu + term(hangdonvi)
ElseIf hangdonvi = 5 And hangchuc <> 0 Then
Chu = Chu + " l¨m "
ElseIf hangdonvi = 5 And hangchuc = 0 Then
Chu = Chu + " n¨m "
End If
Chu = Chu + tlop(i)
End If
' Xet lop ke tiep
i = i - 1
Loop
Chu = Trim(Chu)
If Chu <> "" Then
Chu = UCase(Left(Chu, 1)) & Right(Chu, Len(Chu) - 1)
End If
CHUSO = Chu
End Function

Các bạn kiểm tra lại công thức trên.
 
HaiTam

HaiTam

Nguyễn Hải Tâm
Thành viên BQT
7/11/02
2,177
594
113
TP.HCM
www.webketoan.vn
:help Thêm một cách chuyển đổi số thành chữ:
+ Bạn chép file đính kèm theo đây vào C:\Program Files\Microsoft Office\Office\Library
+ Bạn vào Excel -> Tools -> Add-ins -> dẫn tới thư mục đã chép file như trên và bấm OK
+ Bạn thử đánh 123 vào ô A1; ô A2 bạn đánh =vnivnd(A1); ô A3 bạn đánh =usd(A1). Nếu hàm trả về kết quả thì sau này bạn mở bất kỳ file mới nào cũng đương nhiên có chạy được hàm này.

Chú ý: Hàm vnivnd() dùng font VNI; bạn nào biết chút chút thì có thể sửa lại font khác.
Khi dùng BKAV thì đừng quét tự động all macro nó sẽ giết luôn cái hàm này đấy.
 
P

pnphuong

NHẪN
12/12/02
610
7
18
Hanoi
Chạy ngon rồi bác Admin à! Nếu có thể thì bác bỏ cái chữ bằng chữ ở trước mỗi phần dịch đi, vì thực tế nếu in hoá đơn hay in cái gì đó thì phần này đã có sẵn rồi.
Nếu có sẵn tài liệu trên mạng về cách tạo File .xla thì bác cho em xin một bản để em học tập nhé! Xin cảm ơn!
 
A

Anhchuot

Lên thớt...
23/7/03
362
6
18
Hanoi
www.
Em cũng có 1 chương trình chuyển số thành chữ của 1 người bạn. Dùng rất hay, khi chuyển sang ngôn ngữ tiếng việt rất hợp lý.
VD: 445.567 - Bốn trăm bốn lăm nghìn năm trăm sáu mươi bảy
Có thể chuyển đổi sang mọi chương trình như của anh Hyper (excel,...)
 
HaiTam

HaiTam

Nguyễn Hải Tâm
Thành viên BQT
7/11/02
2,177
594
113
TP.HCM
www.webketoan.vn
Còn chờ gì nữa post lên đây cho mọi ngươi tham khảo đi ? À quên phải xin ý kiến tác giả của nó đã nghe.

Cái hàm trong file anh post lên đọc ra như là "Bằng chữ: Bốn trăm bốn mươi lăm ngàn, năm trăm sáu mươi bảy đồng chẳn" và còn còn có thể viết tiền usd ra bằng tiếng Anh nữa đấy :leu: (nỗ chút cho vui)

PS. Mới vừa update lại cái file bên trên, hy vong kỳ này xài được.
 
P

pnphuong

NHẪN
12/12/02
610
7
18
Hanoi
Hehe, em vừa có được tính năng upload file lên thì bác đã upload lên trước rồi. Anhchuot đưa lên để mọi người tham khảo đi nhé. Mình cũng có một cái cũng tuyệt với nhưng mà phải cài font chữ cũng phải là VNI. Kế mà bác nào chịu khó sửa lại thành UNICODE thì hay quá, như thế sẽ phổ biến hơn.
Tuy nhiên, nếu các bạn dùng nhiều thì sẽ thấy, khi sử dụng trong EXCEL thì vô tư nhưng chẳng hạn bạn ứng dụng để trộn văn bản sang WORD phục vụ in hóa đơn thì các font khác sẽ bị sai, mà font VNI thì vẫn vô tư. Chứng tỏ font vni rất tương thích với các ứng dụng trong MS OFFICE.
 
A

Anhchuot

Lên thớt...
23/7/03
362
6
18
Hanoi
www.
Originally posted by VNgeek@Oct 10 2003, 12:54 PM
Cái hàm trong file anh post lên đọc ra như là "Bằng chữ: Bốn trăm bốn mươi lăm ngàn, năm trăm sáu mươi bảy đồng chẳn" và còn còn có thể viết tiền usd ra bằng tiếng Anh nữa đấy&nbsp; :leu: (nỗ chút cho vui)

Em đang định post bài lên thì bác VNgeek cho 1 bài thế thì ai dám, ngượng quá :wall .
Ví dụ của em có 3 chỗ đậm, vậy mà của bác đến cả dòng đậm thế thì em mang lên đây chỉ tổn mất diện tích của web mà thôi. Đây hàm của bạn em viết (nó cho em dùng thoải mái, nên khỏi phải xin phép)
 
HaiTam

HaiTam

Nguyễn Hải Tâm
Thành viên BQT
7/11/02
2,177
594
113
TP.HCM
www.webketoan.vn
Anhchuot có đọc chỗ này hông ?
(nỗ chút cho vui)
Mỗi cái do một người viết khác nhau, có thể không giống nhau và có cái hay riêng chứ.
Cái của VNgeek cũng do sưu tầm từ nhiều nguồn code lại thôi, nếu bạn nào xem code thì sẽ thấy trong đó có 3 hàm viết theo 3 cách khác nhau :leu:

To pnphuong, mình đã thử chuyển sang Unicode nhưng hình như VB trong office chưa hỗ trợ unicode hay sao ấy nên làm mãi chưa được.
 
P

pnphuong

NHẪN
12/12/02
610
7
18
Hanoi
Đúng rồi bác VNgeek ơi, em chuyển sang nó cũng chuối lắm, mất hẳn code luôn, thế mới chán chứ, chắc là phải gặp dân cao thủ, đầu mưng mủ thôi, chứ cái loại tay trái như kiếu anh em mình thì chắc là chưa chuyển được. Thôi, trong lúc chưa được thì đành dùng tạm vậy, "méo mó có hơn không" các bác nhỉ.
 
A

Anhchuot

Lên thớt...
23/7/03
362
6
18
Hanoi
www.
Ko phải có chú mèo nào làm chuột này sợ đâu (thích chén thịt mèo là khác :leu: ) mà là hơi ngượng với bác VNgeek thôi. Nhưng giờ hết ngượng rồi, upload lên để các bác tham khảo nhé.
 
A

Anhchuot

Lên thớt...
23/7/03
362
6
18
Hanoi
www.
Các bác copy toàn bộ đoạn này vào visual Basic rồi làm như hướng dẫn của HyperVN í.

Hàm có tên là: =convert(a1)
 
H

haimichael

Guest
3/1/04
44
0
6
Pnphuong nay hom nay to doc thay

Em chẳng lấy chồng kế toán đâu!
Nợ có, thu chi nhức cả đầu.
Nửa đêm hai đứa đang "êm" ái...
Nhìn em anh hỏi: "chứng từ đâu?"

cậu lam cho minh thấy hơi động chạm đấy
dân kế toán la những người rất đáng yêu chứ
họ sẽ quan tâm cho cậu chu đáo nếu lấy một người chồng làm cùng ngành thì càng dễ tâm sự trao đổi hơn,dễ dàng thông cảm cho nhau hơn
mà dân kế toán không chỉ biết đến các con số mà còn biết cả về tin học ...
có thể tạo cho cậu một cuộc sống đầy bất ngờ và thú vị
:il :il :il :il :il :il :il :il :il :il :il :il :il :il :il :il :il :il
 
A

anhvu

Cao cấp
11/10/03
213
0
16
Truy cập trang
a-b-c-d-e-f
 
Sửa lần cuối:
erpvn

erpvn

Don't know what is erp!
28/1/04
418
0
16
47
Miền đất hứa
www.erpvna.com
Muốn master vụ này các bạn hãy mua cuống "Excel nâng cao" của Ông Văn Thông (lâu quá chắc cuốn này thất truyền rồi, ghé hiệu sách củ hày Cơ sở của lão ấy). Nếu ai muốn tự làm kt bằng Excel thì nên mua cuốn này, good luck.
 

Xem nhiều

Webketoan Zalo OA