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

  • Thread starter HyperVN
  • Ngày gửi
Windows 7

Windows 7

Guest
13/8/11
32
0
0
USA
Ðề: 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ử.

Không phải là Excel 2003 đâu bạn, mà bản 2010 cũng vậy, Nếu bạn để chế độ là Number thì nó sẽ có số 0 sau, còn General thì sẽ chuyển qua E+

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

Đó là cách tạo ra Add-In, Bạn cứ làm theo đúng như vậy sẽ được.

Đọ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ứ!
Add-In thì nhiều nhưng để tìm đúng cái theo yêu cầu công việc của mình thì phải sữa Code lại thôi.
 
Khóa học Quản trị dòng tiền
tinhdonphuong

tinhdonphuong

Trung cấp
13/12/12
78
0
0
Hà Nội
Ðề: File chuyển số sang viết bằng chữ

Tất cả các hàm chuyển số ra chữ hiện nay đều được viết trên cùng 1 logic và gần như dùng 1 loại font (Vni font).

Tôi đã làm thử bằng UNICode cho phù hợp với xu thế hiện nay nhưng không được. Có bác nào có giải pháp không?
 
H

huynhquangbinhgl

Sơ cấp
25/6/13
5
0
0
35
TP HCM
Ðề: File chuyển số sang viết bằng chữ

Có bác nào còn sài excel 2003 như em không ạ
 
P

phanmemql

Sơ cấp
20/9/13
5
0
0
36
tt them
Ðề: File chuyển số sang viết bằng chữ

đúng cái mình cần rồi đoạn code này không biết sài được không trước mình có viết code nhưng vẫn bị lỗi mong là code này sẽ giúp đươc mình nhiều
 
L

longdpph00858

Sơ cấp
13/6/12
4
0
0
32
Hà Nội
Ðề: File chuyển số sang viết bằng chữ

Cái này quét bằng Quảng nổ kiểu gì cũng "đứt" :036:
 
L

luatcongdong

Trung cấp
2/7/14
81
1
6
43
535 Kim Mã
Ðề: File chuyển số sang viết bằng chữ

Bác nào làm thành công rùi, chỉ em với
 
C

Camry

Guest
25/4/06
50
0
6
Danang
Mình đang làm theo cách sử dụng riêng 1 sheet trong bảng tính có thể sử dụng tiếng Anh và Việt, ngắn gọn không dài dòng lắm, không xài add in, chỉ cần copy vào là chạy thôi, dùng ở máy tính nào cũng được. Bạn nào cần mình sẽ gửi cho.
 
T

thutrang1905

Trung cấp
22/7/14
148
12
18
34
Linh Đàm, Hà Nội
starnpos.com
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.
Có hàm chuyển số thành chữ nào đơn giản hơn không ah
 
T

thutrang1905

Trung cấp
22/7/14
148
12
18
34
Linh Đàm, Hà Nội
starnpos.com
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.
SAO KHÔNG DC nhỉ ? báo lỗi #name
 
T

thutrang1905

Trung cấp
22/7/14
148
12
18
34
Linh Đàm, Hà Nội
starnpos.com
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.
mình cũng làm như vậy nhưng bây giờ lại báo #value là làm sao bạn nhỉ
 
G

gamegamegamegame

Guest
13/7/15
1
0
1
37
Bạn chép đoạn mã này đè vào phần tương ứng trong mã của bạn Maika nhé. Chúc vui.

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", "")

bạn ơi có thể thêm dấu phẩy ở mỗi chữ đc ko bạn
vd :
423.638.640
[TBODY] [/TBODY]
(bốn trăm hai mươi ba triệu,sáu trăm ba mươi tám ngàn,sáu trăm bốn mươi đồng)
 

Xem nhiều

Webketoan Zalo OA