Kiểm tra xem đó có phải là ngày nghỉ vào ngày được chỉ định hay không bằng cách sử dụng VBA trong Microsoft Excel
Trong bài viết này, chúng tôi sẽ tạo một Chức năng do Người dùng Xác định (UDF) để kiểm tra xem đó có phải là ngày nghỉ vào ngày được chỉ định hay không, bao gồm hoặc không bao gồm các ngày thứ Bảy và Chủ nhật là ngày nghỉ trong tuần.
Dữ liệu thô cho mẫu này bao gồm các ngày theo thứ tự trong cột A. Chúng tôi sẽ tìm xem liệu đó có phải là ngày nghỉ vào ngày nhất định, bao gồm hoặc không bao gồm ngày nghỉ vào Thứ Bảy hoặc Chủ Nhật.
Chúng tôi đã chỉ định ngày lễ trong cột A trên trang tính “Ngày lễ”.
Chúng tôi đã tạo chức năng tùy chỉnh “IsHoliday” để tìm trạng thái của kỳ nghỉ vào ngày nhất định.
Cú pháp của hàm
IsHoliday (Date, InclSaturdays, InclSundays)
InclSaturdays và InclSundays là các tham số tùy chọn. Theo mặc định, cả hai đều có giá trị TRUE. Để thay đổi thứ bảy và chủ nhật thành ngày làm việc, hãy thay đổi giá trị của tham số tương ứng thành FALSE.
Chúng tôi đã sử dụng công thức dưới đây trong ô C9 để tìm trạng thái ngày nghỉ cho ngày trong ô A9 coi Thứ Bảy là ngày làm việc.
IsHoliday (A9, FALSE)
Chúng tôi đã sử dụng công thức dưới đây trong ô D9 để tìm trạng thái ngày lễ cho ngày trong ô A9 coi Thứ Bảy và Chủ Nhật là ngày làm việc.
IsHoliday (A9, FALSE, FALSE)
Chúng tôi đã sử dụng công thức dưới đây trong ô E9 để tìm trạng thái ngày lễ cho ngày trong ô A9 coi Thứ Bảy và Chủ Nhật là ngày nghỉ trong tuần.
IsHoliday (A9)
Giải thích logic
Trong hàm “IsHoliday”, trước hết chúng ta kiểm tra xem ngày đã cho trong tham số có tồn tại trong danh sách ngày lễ được chỉ định hay không. Nếu ngày tồn tại trong danh sách ngày lễ, thì trả về “Ngày lễ” dưới dạng đầu ra. Nếu ngày không tồn tại trong danh sách ngày lễ, hãy kiểm tra xem ngày đã cho là thứ Bảy hay Chủ nhật. Dựa trên tham số đầu vào được cung cấp, hãy kiểm tra xem nên bao gồm hay loại trừ Thứ Bảy hoặc Chủ Nhật là ngày lễ.
Giải thích mã
Đặt RngFind = Worksheets (“Ngày lễ”). Cột (1) .Find (LngDate)
Đoạn mã trên được sử dụng để tìm vị trí có ngày được chỉ định trong danh sách ngày lễ.
If Not RngFind Is Nothing Then OK = “Holiday”
GoTo Last End If Trên mã được sử dụng để kiểm tra xem ngày cụ thể có tồn tại trong danh sách ngày lễ hay không. Nếu điều kiện trả về TRUE, thì hàm tùy chỉnh sẽ trả về “Ngày lễ” dưới dạng đầu ra và điều khiển chuyển đến dòng cuối cùng của UDF.
Vui lòng theo dõi bên dưới để biết mã
Option Explicit Function IsHoliday(LngDate As Date, Optional InclSaturdays As Boolean = True, _ Optional InclSundays As Boolean = True) 'Declaring variables Dim RngFind As Range Dim OK As String 'Initializing the variable OK = "Working day" On Error Resume Next 'Finding the location where the specified date exist in the Holidays sheet Set RngFind = Worksheets("Holidays").Columns(1).Find(LngDate) On Error GoTo 0 'Checking whether it is holiday on the given date If Not RngFind Is Nothing Then OK = "Holiday" GoTo Last End If 'Checking whether it is Saturday on given date If InclSaturdays Then If Weekday(LngDate, 2) = 6 Then OK = "Holiday" GoTo Last End If End If 'Checking whether it is Sunday on given date If InclSundays Then If Weekday(LngDate, 2) = 7 Then OK = "Holiday" End If End If Last: IsHoliday = OK End Function
Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.
Chúng tôi rất muốn nghe ý kiến từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]