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.

ArrowRawData

Chúng tôi đã chỉ định ngày lễ trong cột A trên trang tính “Ngày lễ”.

ArrowHolidayList

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.

ArrowOutput

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]