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

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi HyperVN, 15 Tháng tư 2003.

115,649 lượt xem

  1. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    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.
     
    #1
  2. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    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.
     
    #2
  3. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    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é!
     
    #3
  4. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    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
     
    #4
  5. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    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.
     
    #5
  6. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Phần này đưa vào Compile thì không bị lỗi như ở phần trên, nhưng khi đưa vào sử dụng thì không dịch được số ra chữ và chỉ báo là [HASHTAG]#VALUE[/HASHTAG]!, mình dùng Excel 2000
     
    #6
  7. HaiTam

    HaiTam Nguyễn Hải Tâm

    Bài viết:
    1,944
    Đã được thích:
    325
    Giới tính:
    Nam
    Nơi ở:
    TP.HCM
    :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.
     
    #7
  8. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    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!
     
    #8
  9. Anhchuot

    Anhchuot Lên thớt...

    Bài viết:
    361
    Đã được thích:
    1
    Nơi ở:
    Hanoi
    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,...)
     
    #9
  10. HaiTam

    HaiTam Nguyễn Hải Tâm

    Bài viết:
    1,944
    Đã được thích:
    325
    Giới tính:
    Nam
    Nơi ở:
    TP.HCM
    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.
     
    #10
  11. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    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.
     
    #11
  12. Anhchuot

    Anhchuot Lên thớt...

    Bài viết:
    361
    Đã được thích:
    1
    Nơi ở:
    Hanoi
    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)
     
    #12
  13. HaiTam

    HaiTam Nguyễn Hải Tâm

    Bài viết:
    1,944
    Đã được thích:
    325
    Giới tính:
    Nam
    Nơi ở:
    TP.HCM
    Anhchuot có đọc chỗ này hông ?
    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.
     
    #13
  14. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    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ỉ.
     
    #14
  15. pnphuong

    pnphuong NHẪN

    Bài viết:
    608
    Đã được thích:
    0
    Nơi ở:
    Hanoi
    Mà Anhchuot bảo đưa ra đoạn mã nguồn mà chẳng thấy đâu cả. Chắc chuẩn bị đưa lên mạng thì lại vừa bị anh mèo nào đến thế là sợ quá quên mất post lên cho mọi người xem rồi! Lúc nào hoàn hồn thì đưa lên cho bà con tham khảo nhé.
     
    #15
  16. Anhchuot

    Anhchuot Lên thớt...

    Bài viết:
    361
    Đã được thích:
    1
    Nơi ở:
    Hanoi
    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é.
     
    #16
  17. Anhchuot

    Anhchuot Lên thớt...

    Bài viết:
    361
    Đã được thích:
    1
    Nơi ở:
    Hanoi
    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)
     
    #17
  18. haimichael

    haimichael Thành viên hoạt động

    Bài viết:
    44
    Đã được thích:
    0
    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
     
    #18
  19. anhvu

    anhvu Thành viên thân thiết

    Bài viết:
    213
    Đã được thích:
    0
    a-b-c-d-e-f
     
    Last edited: 19 Tháng tám 2006
    #19
  20. erpvn

    erpvn Don't know what is erp!

    Bài viết:
    416
    Đã được thích:
    0
    Nơi ở:
    Miền đất hứa
    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.
     
    #20

Chia sẻ trang này