Chuyển ngày tháng năm dạng số ra chữ

Liên hệ QC

tuyetanh

Thành viên mới
Tham gia
24/5/07
Bài viết
2
Được thích
0
Xin chào!
Mong các bạn giúp đỡ
Mình muốn chuyển ngày tháng năm dạng số thành chữ ( font Unicode)trong excel
Ví dụ: 12/04/2009 đọc thành Ngày mười hai tháng tư năm hai nghìn lẻ chín
MOng các bạn giúp đỡ
Cám ơn rất nhiều
 
Xin chào!
Mong các bạn giúp đỡ
Mình muốn chuyển ngày tháng năm dạng số thành chữ ( font Unicode)trong excel
Ví dụ: 12/04/2009 đọc thành Ngày mười hai tháng tư năm hai nghìn lẻ chín
MOng các bạn giúp đỡ
Cám ơn rất nhiều
Cái này chắc phải dùng VBA hoặc một bảng phụ.
Còn nếu muốn đơn giản thì đọc thành: Ngày 12 tháng 04 năm 2009 (Format cells - Number - Custom - Type = "Ngày "dd" tháng "mm" năm "yyyy)
 
Xin chào!
Mong các bạn giúp đỡ
Mình muốn chuyển ngày tháng năm dạng số thành chữ ( font Unicode)trong excel
Ví dụ: 12/04/2009 đọc thành Ngày mười hai tháng tư năm hai nghìn lẻ chín
MOng các bạn giúp đỡ
Cám ơn rất nhiều
Bạn phải dùng VBA. Tải hàm đọc số tiếng Việt có rất nhiều trên diễn đàn.
Ví dụ sử dụng hàm docso(number), ô A1 là ô chứa giá trị ngày 12/04/2009.
Công thức: ="Ngày " & docso(DAY(A1)) & " tháng " & docso(MONTH(A1)) & " năm " & docso(YEAR(A1))
Bạn có thể tải Ho tro Tieng Viet VBA.zip trong bài Công cụ hỗ trợ tiếng Việt cho Excel trong đó có hàm docsouni.
 
Để giải quyết 1 cách thấu đáo thì phải viết hàm cụ thể vì ngữ đọc ngày có đặc thù riêng như:
-Ngày<10 đọc Mùng (Mồng)...
-Từ 21-29: Còn đọc là hăm...
 
Xin góp chút hàm cho vui, sử dụng cho font Unicode:

  • Thứ:
    Mã:
    Function XWeekday(ngay As Date) As String
        Rng = Array("", "Ch" & ChrW(7911) & " Nh" & ChrW(7853) & "t", _
            "Th" & ChrW(7913) & " Hai", "Th" & ChrW(7913) & " Ba", _
            "Th" & ChrW(7913) & " T" & ChrW(432), "Th" & ChrW(7913) & " N" & ChrW(259) & "m", _
            "Th" & ChrW(7913) & " Sáu", "Th" & ChrW(7913) & " B" & ChrW(7843) & "y")
        XWeekday = Rng(Weekday(ngay, vbSunday))
    End Function

  • Ngày:
    Mã:
    Function XDay(ngay As Date) As String
        Rng1 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " n" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
        Rng2 = Array("", "m" & ChrW(432) & ChrW(7901) & "i", _
            " hai m" & ChrW(432) & ChrW(417) & "i", " ba m" & ChrW(432) & ChrW(417) & "i")
        Rng3 = Array("", " m" & ChrW(7889) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " l" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
        Rng4 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " l" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
        If Day(ngay) < 10 Then
            XDay = "m" & ChrW(7891) & "ng" & Rng1(Day(ngay))
        Else
            If Day(ngay) Mod 10 = 0 Then XDay = Rng2(Int(Day(ngay) / 10))
            If Day(ngay) < 20 Then
                XDay = Rng2(Int(Day(ngay) / 10)) & Rng4(Day(ngay) Mod 10)
            Else
                XDay = Rng2(Int(Day(ngay) / 10)) & Rng3(Day(ngay) Mod 10)
            End If
        End If
    End Function

  • Tháng:
    Mã:
    Function XMonth(ngay As Date) As String
        Rng = Array("", "Giêng", "Hai", "Ba", "T" & ChrW(432), _
            "N" & ChrW(259) & "m", "Sáu", "B" & ChrW(7843) & "y", _
            "Tám", "Chín", "M" & ChrW(432) & ChrW(7901) & "i", _
            "M" & ChrW(432) & ChrW(7901) & "i m" & ChrW(7897) & "t", _
            "M" & ChrW(432) & ChrW(7901) & "i hai")
        XMonth = Rng(Month(ngay))
    End Function

  • Năm:
    Mã:
    Function XYear(ngay As Date) As String
        Dim XNam As Long
        Dim SoNam, SoNgan, SoTram, SoMuoi, SoLe
        XNam = Year(ngay)
        Rng1 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " n" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
        Rng2 = Array("", " m" & ChrW(432) & ChrW(7901) & "i", _
            " hai m" & ChrW(432) & ChrW(417) & "i", " ba m" & ChrW(432) & ChrW(417) & "i", _
            " b" & ChrW(7889) & "n m" & ChrW(432) & ChrW(417) & "i", _
            " n" & ChrW(259) & "m m" & ChrW(432) & ChrW(417) & "i", _
            " s" & ChrW(225) & "u m" & ChrW(432) & ChrW(417) & "i", _
            " b" & ChrW(7843) & "y m" & ChrW(432) & ChrW(417) & "i", _
            " t" & ChrW(225) & "m m" & ChrW(432) & ChrW(417) & "i", _
            " ch" & ChrW(237) & "n m" & ChrW(432) & ChrW(417) & "i")
        Rng3 = Array("", " m" & ChrW(7889) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " l" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
        Rng4 = Array("", " m" & ChrW(7897) & "t", " hai", " ba", " b" & ChrW(7889) & "n", _
            " l" & ChrW(259) & "m", " s" & ChrW(225) & "u", " b" & ChrW(7843) & "y", _
            " t" & ChrW(225) & "m", " ch" & ChrW(237) & "n")
    
        For i = 1 To 3
            SoNam = Mid(XNam, i, 1)
            If i = 1 Then SoNgan = Rng1(SoNam) & " ngàn"
            If i = 2 Then
                SoMuoi = Right(XNam, 2) * 1
                If SoNam = 0 Then
                    If SoMuoi = 0 Then XYear = SoNgan: Exit Function
                    SoTram = " không"
                Else
                    SoTram = Rng1(SoNam)
                End If
                SoTram = SoTram & " tr" & ChrW(259) & "m"
            End If
            If i = 3 Then
                SoLe = Right(XNam, 1)
                If SoNam = 0 Then
                    If SoLe = 0 Then SoMuoi = "" Else SoMuoi = " l" & ChrW(7867) & Rng1(SoLe)
                Else
                    If SoLe = 0 Then
                        SoMuoi = Rng2(SoNam)
                    Else
                        If SoMuoi < 12 Then SoMuoi = Rng2(SoNam) & Rng4(SoLe) _
                        Else SoMuoi = Rng2(SoNam) & Rng3(SoLe)
                    End If
                End If
            End If
        Next
        XYear = SoNgan & SoTram & SoMuoi
    End Function
 
Và đây là 4 hàm để tùy nghi sử dụng:

  • Thứ ngày tháng năm:
    Mã:
    Function ThuNgayThangNam(ngay As Date, Optional Point As String = "") As String
        ThuNgayThangNam = XWeekday(ngay) & ", ngày " & XDay(ngay) & " tháng " & XMonth(ngay) _
        & ", n" & ChrW(259) & "m" & XYear(ngay) & Point
    End Function

  • Ngày tháng năm:
    Mã:
    Function NgayThangNam(ngay As Date, Optional Point As String = "") As String
        NgayThangNam = "Ngày " & XDay(ngay) & " tháng " & XMonth(ngay) _
        & ", n" & ChrW(259) & "m" & XYear(ngay) & Point
    End Function

  • Tháng năm:
    Mã:
    Function ThangNam(ngay As Date, Optional Point As String = "") As String
        ThangNam = "Tháng " & XMonth(ngay) & ", n" & ChrW(259) & "m" & XYear(ngay) & Point
    End Function

  • Năm:
    Mã:
    Function Nam(ngay As Date, Optional Point As String = "") As String
        Nam = "N" & ChrW(259) & "m" & XYear(ngay) & Point
    End Function


Ví dụ, ô A1 gõ =TODAY(), rồi ở đâu đó, gõ công thức để đọc, thích có dấu gì ở cuối cùng thì thêm vào ở tham số thứ hai (ví dụ 2 là dùng dấu chấm, ví dụ 4 là dùng dấu phẩy), còn không thích có cái gì ở cuối cùng hết thì... hỏng gõ thêm gì hết...
=Thungaythangnam(A1) = Thứ Ba, ngày mười bốn tháng Tư, năm hai ngàn không trăm lẻ chín

=Ngaythangnam(A1, ".") = Ngày mười bốn tháng Tư, năm hai ngàn không trăm lẻ chín.

=Thangnam(A1) = Tháng Tư, năm hai ngàn không trăm lẻ chín

=Nam(A1, ",") = Năm hai ngàn không trăm lẻ chín,

000-1206.jpg
Đây là file đính kèm chứa mấy cái code ở trên. Nhờ các bạn test dùm. Thấy sai cứ nói, thấy dở cứ chửi... hỏng sao hết. Mình đang mày mò tập tọe chút VBA mà...
 

File đính kèm

  • DocNgayThang.rar
    24.4 KB · Đọc: 420
Lần chỉnh sửa cuối:
làm theo cách bạn chỉ ko được, còn cách nào khác ko bạn, mình rất muốn chyển thành kiểu đơn giản : Ngày 12 tháng 04 năm 2009
 
Cái này chắc phải dùng VBA hoặc một bảng phụ.
Còn nếu muốn đơn giản thì đọc thành: Ngày 12 tháng 04 năm 2009 (Format cells - Number - Custom - Type = "Ngày "dd" tháng "mm" năm "yyyy)

Mình muốn chuyển ô A1= 17/04/2017 sang ô A2= Ngày 17 tháng 04 năm 2017 thì làm sao hả bạn? Chỉ giúp mình với, Cảm ơn !!!
 
Web KT
Back
Top Bottom