Menu

Chia sẻ tiện ích nhỏ: Tự động chuyển đổi định dạng số sang chữ trong Excel

Chu Thánh Sương 27/03/2026 15:07 502 lượt xem 2 trả lời

Chào mọi người,

Dạo này mình hay phải làm việc với các văn bản hành chính, hợp đồng, mà cứ phải ngồi gõ số tiền bằng chữ mỏi cả tay. Tìm tòi trên mạng thì thấy có mấy cách làm thủ công hoặc dùng VBA phức tạp quá. Hôm nay, mình muốn chia sẻ một tiện ích nhỏ mà mình tự mày mò ra, giúp tự động chuyển đổi định dạng số sang chữ một cách nhanh chóng, đỡ mất công gõ lại.

Cách này không cần cài thêm phần mềm gì phức tạp, cũng không cần viết code VBA. Nó tận dụng một hàm tùy chỉnh (User Defined Function - UDF) mà mình đã đóng gói lại. Các bạn chỉ cần chép đoạn code này vào module trong Excel là dùng được ngay.

Cách sử dụng:

  • Mở file Excel của bạn.
  • Nhấn Alt + F11 để mở cửa sổ VBA Editor.
  • Vào Insert > Module.
  • Copy đoạn code dưới đây và dán vào cửa sổ Module vừa mở:
Function SoSangChu(So As Double, Optional loaiTien As String = "VND") As String
    Dim MangSo() As String
    Dim ChuoiSo As String
    Dim ChuoiChu As String
    Dim i As Integer

    So = Abs(So)
    ChuoiSo = Format(So, "#,##0.00") ' Định dạng số có 2 thập phân
    MangSo = Split(ChuoiSo, ".")

    ChuoiChu = DocSo(MangSo(0)) ' Đọc phần nguyên

    If UBound(MangSo) = 1 Then
        If Val(MangSo(1)) > 0 Then
            ChuoiChu = ChuoiChu & " phẩy " & DocSo(MangSo(1)) ' Đọc phần thập phân
        End If
    End If

    Select Case UCase(loaiTien)
        Case "VND"
            SoSangChu = ChuoiChu & " đồng"
        Case Else
            SoSangChu = ChuoiChu
    End Select
End Function

Function DocSo(GiaTri As String) As String
    Dim MangChuoi() As String
    Dim i As Integer
    Dim KetQua As String

    GiaTri = Trim(GiaTri)
    GiaTri = Replace(GiaTri, ",", "") ' Loại bỏ dấu phẩy ngăn cách hàng nghìn
    GiaTri = Replace(GiaTri, " ", "") ' Loại bỏ khoảng trắng

    MangChuoi = Split(GiaTri, "") ' Tách từng ký tự số

    For i = 1 To UBound(MangChuoi)
        Select Case MangChuoi(i)
            Case "0": KetQua = KetQua & " không "
            Case "1": KetQua = KetQua & " một "
            Case "2": KetQua = KetQua & " hai "
            Case "3": KetQua = KetQua & " ba "
            Case "4": KetQua = KetQua & " bốn "
            Case "5": KetQua = KetQua & " năm "
            Case "6": KetQua = KetQua & " sáu "
            Case "7": KetQua = KetQua & " bảy "
            Case "8": KetQua = KetQua & " tám "
            Case "9": KetQua = KetQua & " chín "
        End Select
    Next i

    ' Xử lý các trường hợp đặc biệt như hàng chục, hàng trăm...
    ' (Phần này có thể tùy chỉnh để tối ưu hơn nữa)
    KetQua = Replace(KetQua, " một nghìn ", " nghìn ")
    KetQua = Replace(KetQua, " một trăm ", " trăm ")
    KetQua = Replace(KetQua, " mười không ", " mười ")
    KetQua = Replace(KetQua, " không trăm ", " ")
    KetQua = Replace(KetQua, " không mười ", " lẻ ")
    KetQua = Trim(KetQua)
    KetQua = Replace(KetQua, "  ", " ") ' Loại bỏ khoảng trắng thừa

    DocSo = KetQua
End Function

Sau khi dán code, bạn có thể sử dụng hàm SoSangChu trong các ô tính của mình. Ví dụ, nếu số bạn muốn chuyển đổi nằm ở ô A1, bạn chỉ cần gõ vào ô khác công thức:

=SoSangChu(A1)

Hoặc nếu muốn kèm theo đơn vị tiền tệ:

=SoSangChu(A1, "VND")

Hy vọng tiện ích nhỏ này sẽ giúp ích cho công việc của mọi người. Ai có cách nào hay hơn thì chia sẻ thêm nhé!

0

Hay quá bạn ơi! Mình cũng hay gặp cảnh "mỏi tay" với mấy cái số tiền này lắm. Cách bạn chia sẻ có vẻ rất thiết thực, nhất là với dân văn phòng hay làm giấy tờ.

Cho mình hỏi thêm chút là tiện ích này có hỗ trợ chuyển đổi cả số âm hoặc số thập phân không bạn nhỉ? Mình đang có một file cần xử lý cả hai trường hợp này.

3

Tuyệt vời, đúng là "cứu cánh" cho mấy vụ văn bản hành chính đây rồi! Mình cũng hay bị ám ảnh với việc gõ tay số tiền bằng chữ, nhất là mấy con số dài ngoằng.

Tiện ích này nghe có vẻ đơn giản mà hiệu quả, không cần VBA phức tạp thì quá tiện. Bạn có thể chia sẻ cụ thể hơn về cách "tận dụng hàm tùy chỉnh" mà không cần code phức tạp không? Mình tò mò muốn biết đó là hàm gì và cách áp dụng nó ra sao. Cảm ơn bạn đã chia sẻ nhé!

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký