检查是否有假期就在Excel中使用VBA指定的日期
在本文中,我们将创建一个用户定义函数(UDF),以检查它是否在指定的日期放假,包括将周六和周日作为休息时间,或将周六和周日除外。
该样本的原始数据按顺序在A列中包含日期。我们将发现给定日期是否是假日,包括或不包括周六或周日的休息日。
我们在“假期”表的A列中指定了假期日期。
我们创建了“ IsHoliday”自定义函数,以查找给定日期的假期状态。
函数的语法
IsHoliday(日期,包括星期六,包括星期日)
InclSaturdays和InclSundays是可选参数。默认情况下,两者都为TRUE值。要将星期六和星期日更改为工作日,请将相应参数的值更改为FALSE。
我们在单元格C9中使用以下公式在单元格A9中查找日期的休假状态,将星期六视为工作日。
IsHoliday(A9,FALSE)
我们在D9单元格中使用以下公式在A9单元格中查找日期的休假状态,并将周六和周日视为工作日。
IsHoliday(A9,FALSE,FALSE)
我们使用E9单元格中的以下公式在A9单元格中查找日期的休假状态,并将周六和周日视为休假时间。
IsHoliday(A9)
逻辑解释
在“ IsHoliday”功能中,首先我们检查参数中给定的日期是否在指定的假日列表中。如果假日列表中存在日期,则返回“假日”作为输出。如果假日列表中没有日期,请检查指定的日期是星期六还是星期日。根据提供的输入参数,检查是否将星期六或星期日作为假期。
代码说明
设置RngFind = Worksheets(“假日”).Columns(1).Find(LngDate)
上面的代码用于查找假日列表中指定日期的位置。
如果没有,则OK =“ Holiday”
如果上述代码,则转到最后一个结束代码,用于检查假日列表中是否存在指定的日期。如果条件返回TRUE,则自定义函数将返回“假日”作为输出,并且控件移至UDF的最后一行。
请遵循以下代码
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
如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。
我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]