• Chủ Nhật, 16/01/2011 07:55 (GMT+7)

    Hàm Excel đổi giá trị ngày tháng năm thành thứ trong tuần

    Lượt xem 17047
    Đánh giá

    Câu hỏi :

    Trong Excel, xin hỏi dùng hàm gì để đổi giá trị ngày tháng năm trong cột A thành giá trị thứ trong tuần và khi kéo công thức đó trong cột B xuống thì những ô nào trong cột A không có giá trị ngày tháng năm thì ô tương ứng trong cột B sẽ để trống.



    Trả lời :

    Trong Excel (hay trong nhiều phần mềm khác), khi cần giải quyết 1 chức năng nào đó thì bạn có thể chọn 1 trong 2 cách giải quyết sau:

    - Nếu biết hàm sẵn có trong môi trường giải quyết được chức năng cần thực hiện thì bạn hãy dùng hàm đó cho dễ dàng và nhanh chóng.

    - Nếu không có hàm sẵn có trong môi trường (có thể do bạn chưa biết rõ) thì bạn hãy viết 1 hàm mới cho riêng mình để giải quyết vấn đề mà mình muốn, người ta gọi hàm định nghĩa mới này là "user-defined function". Sau khi đã định nghĩa, bạn có thể dùng hàm mới của mình y như dùng hàm sẵn có của hệ thống.
     

    Giả sử bạn không tìm được hàm sẵn có nào để giải quyết việc đổi ngày/tháng sang ngày trong tuần, bạn có thể viết và dùng hàm tự định nghĩa theo qui trình điển hình sau đây: 

    1. Chạy Excel, mở file Excel chứa dữ liệu cần xử lý. 

    2. Kiểm tra nội dung ở cột A đã có nội dung ngày/tháng đúng theo yêu cầu chưa, nếu chưa thì hiệu chỉnh lại theo mong muốn.

    3. Chọn menu Tools.Macro.Visual Basic Editor để mở cửa sổ soạn code VBA. 

    4. Dời chuột về phần tử gốc của cửa sổ "Project" nằm ở trên trái màn hình, ấn phải chuột vào phần tử gốc để hiển thị menu lệnh, chọn mục Insert.Module để tạo mới 1 module mã nguồn VBA. Khi cửa sổ mã nguồn trống hiển thị, bạn hãy viết 2 hàm chức năng sau đây vào:
    'hàm xác định tên thứ bằng tiếng Anh trong tuần

    Public Function EnThuCuaNgay(rg As Range) As String
    Dim sbuf As String
    EnThuCuaNgay = Format(rg.Cells(1, 1).Value, "dddd")
    End Function
    'hàm xác định tên thứ bằng tiếng Việt trong tuần
    Public Function VnThuCuaNgay(rg As Range) As String
    Dim sbuf As String
    Dim EnTenthu(1 To 7) As String
    Dim VnTenThu(1 To 7) As String
    Dim i As Integer
    'khởi động tên các thứ bằng tiếng Anh
    EnTenthu(1) = "Sunday"
    EnTenthu(2) = "Monday"
    EnTenthu(3) = "Tuesday"
    EnTenthu(4) = "Wednesday"
    EnTenthu(5) = "Thursday"
    EnTenthu(6) = "Friday"
    EnTenthu(7) = "Saturday"
    'khởi động tên các thứ bằng tiếng Việt không dấu
    VnTenThu(1) = "Chua nhat"
    VnTenThu(2) = "Thu hai"
    VnTenThu(3) = "Thu ba"
    VnTenThu(4) = "Thu tu"
    VnTenThu(5) = "Thu nam"
    VnTenThu(6) = "Thu sau"
    VnTenThu(7) = "Thu bay"
    'xác định tên thứ từ ngày/tháng
    sbuf = Format(rg.Cells(1, 1).Value, "dddd")
    For i = 1 To 7
    If sbuf = EnTenthu(i) Then
    'đổi tên thứ từ Anh sang Việt
    VnThuCuaNgay = VnTenThu(i)
    Exit Function
    End If
    Next i
    VnThuCuaNgay = "Bi loi"
    End Function

    5. Chọn menu File.Close and Return... để quay về cửa sổ hiển thị bảng tính.

    6. Chọn cell B1, nhập nội dung sau vào cell:
    =VnTenCuaNgay(A1)

    7. Bạn sẽ thấy ngay tên thứ bằng tiếng Việt của ngày được qui định ở cell A1. hãy copy nội dung cell B1 và dán xuống các cell khác trong cột B để đổi ngày/tháng sang thứ của các phần tử còn lại.

    Ý kiến phản hồi và bình luận      Gởi ý kiến của bạn ?
    Chuyên mục: Ứng dụng văn phòng