我可以像这样计算两个日期之间的假期数量:
=COUNTIFS($T$47:$T$57,">="&F59,$T$47:$T$57,"<="&G59)
价值$ T $ 47:$ T $ 57是我的假日日期所在的单元格。 F59是开始日期。 G59是结束日期。
所以基本上它的作用是计算假期在开始和结束日期发生的次数
- 例如 - 开始日期= 2016年11月24日,结束日期= 2016年11月30日返回2(感恩节和黑色星期五,星期四和星期五)。
然而,当谈到今年的圣诞节时,我遇到了麻烦。圣诞节前夕,圣诞节和圣诞节后的第二天被视为假期,但周六,周日和周日都会发生。星期一分别。我不想算一个周末的假期,所以我希望的回报是1.然而,使用我的公式,我目前正在返回3。
如何在此问题中排除周末?
如果有什么不清楚,请告诉我。谢谢!
答案 0 :(得分:1)
一种可能性是添加工作日编号(例如我使用=WEEKDAY(date, 2)
,SAT / SUN分别为数字6和7(仅为了取悦我周一开始一周的约会)。
此外,我使用4和#条件,前2个处理start&amp; amp; B栏的结束日期 - 就像你拥有它一样,第二个两个消除(从C列的新范围)工作日的数字6&amp; 7。
也适用于你的清单......
其他选项包括创建一个数组公式或1次条件的sumproduct(1或0 - 取决于工作日)
答案 1 :(得分:1)
使用NETWORKDAYS或NETWORKDAYS.INTL函数可以很容易地通过从没有指定的假期中减去一个来完成。
=NETWORKDAYS(A2, B2)-NETWORKDAYS(A2, B2, $Z$2:$Z$6)
$Z$2:$Z$6
假期范围可以通过创建一个名为holidays
的命名区域来生成动态,其中指的是:,
=Sheet1!Z2:INDEX(Sheet1!Z:Z, MATCH(1e99, Sheet1!Z:Z))
使用as,
=NETWORKDAYS(A2, B2)-NETWORKDAYS(A2, B2, holidays)
答案 2 :(得分:0)
考虑以下 UDF()
Public Function KountHolidays(Hlist As Range, fDate As Date, lDate As Date) As Long
Dim d As Date
For d = fDate To lDate
ds = Format(d, "dddd")
If ds <> "Sunday" And ds <> "Saturday" Then
For Each r In Hlist
If r.Value = d Then
KountHolidays = KountHolidays + 1
End If
Next r
End If
Next d
End Function
对于完全任意的假期:
这种方法的巧妙之处在于,您可以轻松地将其调整为多年。