Excel - Đổi số ra thành tiền

Đây là bài viết Excel - Đổi số ra thành tiền trong box office & Văn Bản, một box của chuyên mục Hỏi đáp tin học; Câu trả lời đúng nhất của câu hỏi này ở post thứ 2: Excel - Đổi số ra thành tiền ...

kết quả từ 1 tới 5 trên 5
Like Tree1Thích
  • 1 Post By DXT
  1. hroempor - 25-03-2011 11:21 PM
    Font Size
    Câu trả lời đúng nhất của câu hỏi này ở post thứ 2: Excel - Đổi số ra thành tiền

    Anh em nào có thể cho mình hàm trong Excel để chuyển đổi số tiền thành chữ được không?
    Ví dụ: 12,430.05USD Mười hai ngàn bốn trăm ba mươi ngàn lẻ 5 đô la Mỹ.

    Cám ơn anh em trước. Mong nhận được câu trả lời anh em sớm

    Các bài viết liên quan tới Excel - Đổi số ra thành tiền:

  2. DXT - 25-03-2011 11:46 PM
    Nguyên văn bởi hroempor Xem Bài viết
    Anh em nào có thể cho mình hàm trong Excel để chuyển đổi số tiền thành chữ được không?
    Ví dụ: 12,430.05USD Mười hai ngàn bốn trăm ba mươi ngàn lẻ 5 đô la Mỹ.

    Cám ơn anh em trước. Mong nhận được câu trả lời anh em sớm
    Nếu dùng Excel để lập phiếu thu tiền cho khách hàng, bạn sẽ cần ghi số tiền bằng chữ. Để khỏi mất công ghi “bằng tay”, ta hãy tạo một hàm trong Excel “chuyên trị” việc này. Cách làm như sau:

    1. Khởi động Excel, tạo một workbook mới (hoặc dùng Book1 như mặc định). Chọn Tools\ Macro\ Visual Basic Editor để mở cửa sổ soạn thảo VBA. Trong cửa sổ Project Explorer (nếu không thấy thì chọn View\ Project Explorer để mở nó), chọn VBAProject (Book1). Chọn Insert\ Module để thêm một module vào workbook.

    2. Gõ nội dung hàm đổi số ra chữ SoRaChu(N) như đoạn mã 1 vào module mới tạo.

    Đoạn mã 1
    Function SoRaChu(ByVal NumCurrency As Currency) As String
    If NumCurrency = 0 Then
    SoRaChu = "Không đồng"
    Exit Function
    End If
    If NumCurrency > 922337203685477# Then ' Số lớn nhất của loại CURRENCY
    SoRaChu = "Không đổi được số lớn hơn 922,337,203,685,477"
    Exit Function
    End If
    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 = "đồng" ‘ Bạn có thể thay đơn vị tiền tệ khác ở đây
    DonViLe = "xu"
    
    CharVND(1) = "một"
    CharVND(2) = "hai"
    CharVND(3) = "ba"
    CharVND(4) = "bốn"
    CharVND(5) = "năm"
    CharVND(6) = "sáu"
    CharVND(7) = "bảy"
    CharVND(8) = "tám"
    CharVND(9) = "chín"
    
    SoLe = Int((NumCurrency - Int(NumCurrency)) * 100) '2 kí số lẻ
    PhanChan = Trim$(Str$(Int(NumCurrency)))
    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 = "không " + DonViTien + " "
    I = 5
    Else
    BangChu = ""
    I = 0
    End If
    While I <= 5
    Select Case I
    Case 0
    SoDoi = NganTy
    Ten = "ngàn tỷ"
    Case 1
    SoDoi = Ty
    Ten = "tỷ"
    Case 2
    SoDoi = Trieu
    Ten = "triệu"
    Case 3
    SoDoi = Ngan
    Ten = "ngàn"
    Case 4
    SoDoi = Dong
    Ten = DonViTien
    Case 5
    SoDoi = SoLe
    Ten = DonViLe
    End Select
    If SoDoi <> 0 Then
    Tram = Int(SoDoi / 100)
    Muoi = Int((SoDoi - Tram * 100) / 10)
    DonVi = (SoDoi - Tram * 100) - Muoi * 10
    BangChu = Trim(BangChu) + IIf(Len(BangChu) = 0, "", ", ") + _
    IIf(Tram <> 0, Trim(CharVND(Tram)) + " trăm ", "")
    If Muoi = 0 And Tram <> 0 And DonVi <> 0 Then
    BangChu = BangChu + "lẻ "
    Else
    If Muoi <> 0 Then
    BangChu = BangChu + IIf(Muoi <> 0 And Muoi <> 1, _
    Trim(CharVND(Muoi)) + " mươi ", "mười ")
    End If
    End If
    
    If Muoi <> 0 And DonVi = 5 Then
    BangChu = BangChu + "lăm " + Ten + " "
    Else
    If Muoi > 1 And DonVi = 1 Then
    BangChu = BangChu + "mốt " + Ten + " "
    Else
    BangChu = BangChu+IIf(DonVi <> 0,Trim(CharVND(DonVi))+" "+Ten+" ", Ten + " ")
    End If
    End If
    Else
    BangChu = BangChu + IIf(I = 4, DonViTien + " ", "")
    End If
    I = I + 1
    Wend
    If SoLe = 0 Then
    BangChu = BangChu + "chẵn"
    End If
    Mid$(BangChu, 1, 1) = UCase$(Mid$(BangChu, 1, 1))
    SoRaChu = BangChu
    End Function
    Bạn để ý, hàm SoRaChu có phân biệt cách đọc số 1 (một hay mốt), 5 (năm hay lăm), mươi hay mười và chỉ đổi số có trị lớn nhất là 922,337, 203, 685, 477. Các chữ Việt có dấu trong đoạn mã 1 có mã Unicode.

    3. Chuyển sang cửa sổ Excel để kiểm tra hàm bằng cách thử gõ vào ô bất kỳ, ví dụ: =SoRaChu(922337203,34). Nếu êm xuôi thì chuyển sang bước kế tiếp.

    4. Mô tả hàm để chọn chính xác tên hàm khi bạn sử dụng công cụ Past Function. Trong cửa sổ Excel, chọn menu Tools\ Macro\ Macros để hiển thị hộp thoại Macro. Gõ tên hàm SoRaChu vào ô Macro name, rồi bấm Options để mở tiếp hộp thoại Macro Options, gõ nội dung mô tả hàm vào ô Description, bấm OK để đóng hộp thoại Macro Options, cuối cùng bấm Cancel để đóng hộp thoại Macro.

    5. Ghi workbook lên đĩa thành tập tin TienBac.XLA (ví dụ). Bạn phải đặt tập tin này đúng chỗ để mỗi lần Excel khởi động sẽ nạp nó tự động.
    Đối với Excel XP trên Windows XP:
    C:\Documents and Settings\UserName\Application Data\Microsoft\AddIns
    Đối với Excel 2000 trên Windows 98:
    C:\Windows\Application Data\Microsoft\AddIns
    Đối với Excel 97 trên Windows 98:
    C:\Program Files\Microsoft Office\Office\Library
    Đóng Excel mà không cần ghi lại các thay đổi trên Book1.

    6. Dùng Windows Explorer để thêm mô tả cho add-in bằng cách bấm chuột phải trên tên tập tin TienBac.XLA, chọn mục Properties để mở hộp thoại Properties, chọn thẻ Summary để gõ mô tả vào ô Comments, gõ tên của add-in vào ô Title. Chọn nút OK để chấp nhận các thông tin vừa nêu.

    7. Khởi động lại Excel, cài đặt add-in vừa tạo cho Excel bằng cách chọn trình đơn Tools\ Add-Ins để mở hộp thoại Add-Ins, chọn tên add-in của ta trong danh sách Add-Ins available, rồi bấm OK.

    Từ đây trở về sau, mỗi lần mở Excel, bạn đương nhiên dùng được hàm SoRaChu trong add-in TienBac.XLA.

    Bài viết thứ 2

    bạn tham khảo link sau:
    http://www.giaiphapexcel.com/forum/showthread.php?1047-XLL-Add-In-%C4%90%E1%BB%95i-s%E1%BB%91-th%C3%A0nh-ch%E1%BB%AF-T%E1%BB%91c-%C4%91%E1%BB%99-nhanh-t%E1%BB%91i-%C4%91a-nhanh-h%C6%A1n-80-c%C3%A1c-Addins-kh%C3%A1c

      • No Avatar
        bienmuaxuan that la hay, dung luc minh cung dang can. cam on nhieu!
         09:02 AM June 4th, 2011 
      • No Avatar
        hoclamit Wow, giờ mới thấy macro mạnh thế. :)
        2  13:09 PM June 2nd, 2011 
      • No Avatar
        SmileAngel good boy:x
        2  22:02 PM March 26th, 2011 
    bienmuaxuan thích.
    ...Âm nhạc như làm tan biến nỗi cô đơn, vơi đi ưu phiền… hãy để những giai điệu cảm xúc dắt ta
    đi lang thang khắp nơi trong cái vô hạn của không gian và thời gian...
  3. lequang07 - 01-06-2011 11:43 PM
    Ặc, Excel mà cứ như lập trình. Nhìn bác DXT mà mới biết kiến thức của mình còn nông cạn quá :-s

  4. SmileAngel - 02-06-2011 12:46 AM
    Nguyên văn bởi lequang07 Xem Bài viết
    Ặc, Excel mà cứ như lập trình. Nhìn bác DXT mà mới biết kiến thức của mình còn nông cạn quá :-s
    excel là một công cụ tính toán rất mạnh đấy bạn ạ. đặc biệt là đối với các bài toán thống kê.

  5. lequang07 - 04-06-2011 12:48 AM
    Tiện đây nhờ luôn bác DXT về cái bài này mà mình không biết dùng hàm nào để xử lý:
    http://www.mediafire.com/?xb8212ofiox4coo (http://www.mediafire.com/?xb8212ofiox4coo)
    Giờ mình muốn hoàn thành cột Số lượng và thành tiền ở bảng tổng kết tháng lấy dữ liệu ở bảng trên. Nhưng không biết hàm gì để tách mã hàng ở phía dưới lấy theo mã hàng ở phía trên để ra tổng số lượng và thành tiền của từng loại mặt hàng