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

  • Thread starter HyperVN
  • Ngày gửi
Khóa học Quản trị dòng tiền
N

nguyentrang18

Guest
17/11/08
1
0
0
tphcm
xin cám ơn các anh chị, thật là bổ ích và tiện lợi cho công việc
 
D

dinhtiepqk5

Guest
28/10/10
1
0
0
39
da nang
doi so thanh chu

minh cung da thu het cach roi.nhung ko duoc.ban nao giup minh voi.cu nghi canh moi lan dua ho so ra kho bac ma bi tra ve vi nhung loi doc thanh tien bang chu ma minh dau dau lam.ban gui lai doan ma cho minh theo email: dinhtiepqk5@gmail.com
cam on ban nhieu
 
H

HaThuy

Guest
12/6/06
23
0
1
Da Nang
Rất cám ơn các bạn đã nhiệt tình chia sẻ kinh nghiệm này. Mình đã áp dụng và công việc đã thuận lợi hơn nhiều, không còn lỗi đánh sai số tiền bằng chữ nữa.
Nhưng mà: Vd số tiền 1.050.000 (Một triệu không trăm năm mươi ngàn đồng). Nhưng name manager cho ra là (Một triệu năm mươi ngàn đồng). Không có chữ "không trăm".
Các bạn giúp mình sửa phần này với. Nếu không thì sếp không chịu, mình lại không dùng name manager đựoc nữa thì tiếc quá.
Cảm ơn các bạn nhé!
 
minhcong

minhcong

Constantly Looking
13/12/09
1,109
56
48
Đảo Đào Hoa
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.

em làm như bác hướng dẫn, nhưng khi thực hành bị báo lỗi #VALUE!
Mong bác giúp đỡ

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!

Anh làm được thì chỉ em với

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)

Copy vào đâu ạ
Bác nói cụ thể em nghe

Mình thấy bài của "anhoanh" cũng được đấy. Còn đây là đổi số sang chữ bằng tiếng việt của mình:
Xin mô tả như sau: Sử dụng Font chữ "VNI-..." trong bảng tính. Hàm này chia con số của bạn thành từng nhóm 3 con số, đọc từng nhóm rồi ghép lại thành bộ đọc đầy đủ thông qua hàm DocsoVNI
' Doc 3 chu so phuc vu cho docsongVNI
Function Doc3SoVNI(bachuso)
Dim Dvi, Chuc, Tram, Dodai
Dim c(9)
c(0) = "": c(1) = "moät ": c(2) = "hai ": c(3) = "ba ": c(4) = "boán ":
c(5) = "naêm ": c(6) = "saùu ": c(7) = "baûy ": c(8) = "taùm ": c(9) = "chín "
bachuso = Trim(Str(bachuso))
Dodai = Len(bachuso)
Select Case Dodai
Case 1
Dvi = bachuso
Case 2
Dvi = Right(bachuso, 1)
Chuc = Left(bachuso, 1)
Case Else
Dvi = Right(bachuso, 1)
Chuc = Left(Right(bachuso, 2), 1)
Tram = Left(Right(bachuso, 3), 1)
End Select
Doc3SoVNI = c(Dvi)
If Dvi = 5 Then
If Chuc = 0 Then
Doc3SoVNI = "naêm "
Else
Doc3SoVNI = "laêm "
End If
End If
If Dvi = 1 Then
If Chuc > 1 Then
Doc3SoVNI = "moát "
Else
Doc3SoVNI = "moät "
End If
End If
If Chuc > 0 Then
If Chuc = 1 Then
Doc3SoVNI = "möôøi " + Doc3SoVNI
Else
Doc3SoVNI = c(Chuc) + "möôi " + Doc3SoVNI
End If
End If
If Chuc = 0 And Dvi > 0 Then Doc3SoVNI = "leû " + Doc3SoVNI
If Tram = 0 Then
If Chuc = 0 And Dvi = 0 Then
Doc3SoVNI = ""
Else
Doc3SoVNI = "khoâng traêm " + Doc3SoVNI
End If
Else
Doc3SoVNI = c(Tram) + "traêm " + Doc3SoVNI
End If
End Function

' Doi so nguyen ra chu
Function DocsoNGVNI(Songuyen)
Dim Ldvi, Lngan, Ltrieu, Lty, Lngty, Le, Dodai
If Songuyen = 0 Then
DocsoNGVNI = "khoâng "
Else
Songuyen = Trim(Str(Songuyen))
Dodai = Len(Songuyen)
Songuyen = Space(15 - Dodai) + Songuyen
Ldvi = Val(Right(Songuyen, 3))
Lngan = Val(Mid(Songuyen, 10, 3))
Ltrieu = Val(Mid(Songuyen, 7, 3))
Lty = Val(Mid(Songuyen, 4, 3))
Lngty = Val(Left(Songuyen, 3))

If Ldvi <> 0 Then
DocsoNGVNI = Doc3SoVNI(Ldvi)
End If
If Lngan <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lngan) + "ngaøn " + DocsoNGVNI
End If
If Ltrieu <> 0 Then
DocsoNGVNI = Doc3SoVNI(Ltrieu) + "trieäu " + DocsoNGVNI
End If
If Lty <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lty) + "tyû " + DocsoNGVNI
End If
If Lngty <> 0 Then
DocsoNGVNI = Doc3SoVNI(Lngty) + "ngaøn tyû " + DocsoNGVNI
End If
If Left(DocsoNGVNI, 13) = "khoâng traêm " Then DocsoNGVNI = Right(DocsoNGVNI, Len(DocsoNGVNI) - 13)
If Left(DocsoNGVNI, 4) = "leû " Then DocsoNGVNI = Right(DocsoNGVNI, Len(DocsoNGVNI) - 4)
End If
End Function

' Doc so bat ky VNI
Function DocsoVNI(So)
Dim Le, Am, Dodai, i
If Len(Trim(So)) > 16 Then DocsoVNI = "Giôùi haïn soá thöïc trong Excel laø 15 soá ! Xem laïi soá cuûa baïn ?": Exit Function
If So < 0 Then
So = -So
Am = "AÂm "
End If
So = Trim(Str(So))
Dodai = Len(So)
If Val(So) = 0 Then
DocsoVNI = "khoâng "
Else
For i = 1 To Dodai - 1
If Mid(So, i, 1) = "." Then
Le = Right(So, Dodai - i)
So = Val(Left(So, i - 1))
Exit For
Else
So = So
Le = 0
End If
Next i
If Le = 0 Then
DocsoVNI = DocsoNGVNI(So)
Else
If So = 0 Then DocsoVNI = "khoâng phaûy " + DocsoNGVNI(Le)
If So > 0 Then DocsoVNI = DocsoNGVNI(So) + "phaûy " + DocsoNGVNI(Le)
End If
End If
DocsoVNI = Am + DocsoVNI
DocsoVNI = UCase(Left(DocsoVNI, 1)) + Right(DocsoVNI, Len(DocsoVNI) - 1)
End Function

Bác giúp em chuyển sang font .Vntime
 
Sửa lần cuối:
T

trangHVTC

Cao cấp
28/7/05
208
0
0
HN
các bạn vào đây tải vntool về mà dùng. DieuNT
Khuyến mại phần hướng dẫn cài đặt luôn đây:
- excel 2007: Mở nút tròn màu mè phía góc trái màn hình ---> excel option ---> Add-in (bên trái) ---> Go (dưới cùng) ---> Browse ---> chọn file vừa down về.
- excel 2003 thì chọn Tool và thực hiện tiếp như trên thôi.
Khi sử dụng thì gõ = vnd(ô chứa số) là ok rồi.
Good luck!
 
T

tvl297

Guest
14/1/11
2
0
0
son la
bạn dùng công thức viết đọc số ra chữ thì đơn giản hơn, mà không bi sai lệch."mh đã thấy có người viết được rùi đó" mấy hàm if và vlookup, CONCATENATE
 
D

dunggq101

Trung cấp
13/1/11
119
12
18
39
Cầu Giấy, Hà Nội
Mình không làm về kế toán, nên không hay VOC mấy cái này. Hi. Cũng xí xớn vào đây thanks các bạn phát, vì tinh thần chia sẻ :D
 
V

vighung

Guest
19/5/05
2
0
0
39
Ha Giang
Bai viet hay qua, cam on ban nhieu nhe. Mong ban co gang phat huy
 
T

Tranhoe

Sơ cấp
9/11/09
7
1
3
61
Da Nang
Ðề: File chuyển số sang viết bằng chữ không dùng VBE

Một cách sử dụng khác về "đọc số tiền thành chữ" cho các bạn có thêm lựa chọn.
Nếu bạn chưa biết về macro thì bạn có thể dùng file này.

Đã đọc bài viết của Bạn ở topic khác trong forum, Tôi cũng có 1 file tương tự nhưng mã nguồn mở chứ không khóa. Cách xử lý tương tự nhưng giải pháp hoàn chỉnh hơn. Đọc thêm tại đây: http://www.webketoan.vn/forum/ung-dung-excel/file-doc-so-tien-thanh-chu-viet-hoan-toan-bang-cong-thuc-co-ban-khong-macro-153647.html?highlight=#post982350

Chưa có thời gian để đọc hết topic này nhưng Tôi có sử dụng qua một số công cụ đọc số thành chữ nhưng chỉ đọc cho số có tối đa 12 chữ số (dưới nghìn tỷ đồng)
File của mình viết không bị giới hạn như trên, hiện tại đọc được số có 15 chữ số và dể dàng sửa thành n số; đồng thời tùy biến được cách đọc "Bằng chữ: " hay không dùng, có cặp dấu () hay không, hoặc " đồng" hay " đồng chẵn" (mã nguồn mở)

Link tải file: DSTC Đọc số tổng cộng Doc So Thanh Chu UNI.xls - 4shared.com - chia sẻ và lưu trữ - tải xuống tập tin trực tuyến

Các Bạn đọc và cho ý kiến để học tập nhé. Cám ơn!
 
Sửa lần cuối:
T

Tranhoe

Sơ cấp
9/11/09
7
1
3
61
Da Nang
Ðề: File chuyển số sang viết bằng chữ

Đến bây giờ tôi biết được rằng EXCEL 2003 (máy tính Tôi đang dùng) có một hạn chế là: "Nếu một ô (cells) định dạng kiểu số thì chỉ nhập được số tối đa 15 chữ số", khi nhập thêm chữ số thứ 16, 17,... vào phầncuối và Enter thì các chữ số này lập tức biến thành số 0, có nghĩa là nhập số vào không đúng như ý mình thì đọc làm sao cho đúng con số của mình gõ vào. Nó chỉ đọc theo số đang thấy trên cells (là số sai). Vì vậy Tôi không cần cố gắng viết thêm phần code để đọc số nhiều hơn 15 chữ số.

Các Bạn thử nhập vào cell một số có 16 chữ số ví dụ: 1234567890123456, khi Enter thì trong cell lại là số 1234567890123450, tương tự số có 17 chữ số ví dụ: 12345678901234567 lại trở thành số 12345678901234500. Bó tay phải không?

Không biết trong các phiên bản sau này của EXCEL có bị như vậy không? Vì chưa có dịp thử.
 
N

NguyenKhacDuy

Guest
26/1/12
2
0
0
TPHCM
Ðề: File chuyển số sang viết bằng chữ

Đến bây giờ tôi biết được rằng EXCEL 2003 (máy tính Tôi đang dùng) có một hạn chế là: "Nếu một ô (cells) định dạng kiểu số thì chỉ nhập được số tối đa 15 chữ số", khi nhập thêm chữ số thứ 16, 17,... vào phầncuối và Enter thì các chữ số này lập tức biến thành số 0, có nghĩa là nhập số vào không đúng như ý mình thì đọc làm sao cho đúng con số của mình gõ vào. Nó chỉ đọc theo số đang thấy trên cells (là số sai). Vì vậy Tôi không cần cố gắng viết thêm phần code để đọc số nhiều hơn 15 chữ số.

Các Bạn thử nhập vào cell một số có 16 chữ số ví dụ: 1234567890123456, khi Enter thì trong cell lại là số 1234567890123450, tương tự số có 17 chữ số ví dụ: 12345678901234567 lại trở thành số 12345678901234500. Bó tay phải không?

Không biết trong các phiên bản sau này của EXCEL có bị như vậy không? Vì chưa có dịp thử.

Em đã thử trên Excel 2007 và vẫn bị chuyển thành số 0 như bác, em nghĩ chắc là do Excel đã quy định như thế rồi.
 
L

linhtvthbd

Guest
15/11/11
3
0
0
43
Đồng Nai
Ðề: File chuyển số sang viết bằng chữ

Không cần phải rườm rà như thế. Bạn nào cần để lại địa chỉ mail mình sẽ gửi cho, khỏi lo chuyện bản quyền....
 
N

ninhtgc

Sơ cấp
22/3/12
37
0
0
35
Hà Nội
Phương pháp trên thật là hữu ích lắm đây

Sao mà mình làm ko có được, hix
 
N

nguyenthaokt88

Trung cấp
1/11/11
62
0
0
36
bac ninh
Ðề: File chuyển số sang viết bằng chữ

Không cần phải rườm rà như thế. Bạn nào cần để lại địa chỉ mail mình sẽ gửi cho, khỏi lo chuyện bản quyền....

Bạn ơi gửi cho mình một bản được không ? mình đang nghiên cứu thấy hay lắm nhưng khó quá. mail của mình là: thaocoi1988@gmail.com
 
T

Tranhoe

Sơ cấp
9/11/09
7
1
3
61
Da Nang
Ðề: File chuyển số sang viết bằng chữ

Không cần phải rườm rà như thế. Bạn nào cần để lại địa chỉ mail mình sẽ gửi cho, khỏi lo chuyện bản quyền....
Đọc số thành chữ thì có rất nhiều AddIn đễ sử dụng.
Vấn đề ở đây là cách xử lý một vấn đề.
Nếu bạn có kiến thức về VBE thì quá dễ mà.
Không biết VBE vẫn làm được bằng các công thức cơ bản của Excel, đó mời là cái đáng để học hỏi chứ!
 

Xem nhiều

Webketoan Zalo OA