欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天和大家分享一道日期相关的题目。日期相关的这部分内容其实我也不是特别数量,涉及到时间计算、进位、时间换算等等问题,我也要花时间来思考思考。
解决困难最好的方法就是直面困难。所以,解决日期问题的痛点就要多加练习日期相关的问题。
今天的这道题目是判断一个日期是否是工作日。
如表中所示,正确答案已经写在B列中了。题目还给了一些特殊备注,那么我们如何使用公式来完成这道题目呢?
在单元格B2中输入下列公式,三键确认后向下拖曳即可。
=IF(OR(D$2:D$9=A2)+OR(WEEKDAY(A2)={1,7})*AND(D$10:D$11<>A2),"非工作日","工作日")
这条公式是一个IF函数结构。
这部分判断当前日期是否是法定假期。由于是数组形式,因此嵌套OR函数。只要有一个满足条件,OR函数就返回TRUE。
这部分判断当前日期是否是周六或周日。当WEEKDAY函数省略第二参数时,其含义是周日时每周的第1天,周六是每周的第7天。
这部分判断当前日期是否是调休日。
OR(D$2:D$9=A2)+OR(WEEKDAY(A2)={1,7})*AND(D$10:D$11<>A2)
以上所有条件汇聚在一起,就可以判断是否为工作日了。举一个例子:2024-2-4日。
OR(D$2:D$9=A5)返回FALSE
OR(WEEKDAY(A5)={1,7})返回TRUE,因为2月4日是周日
AND(D$10:D$11<>A5)返回FALSE。由于D$10:D$11<>A2的返回值是{FALSE;TRUE},因此AND函数返回FALSE。
所以,三部分条件汇总到一起的结果为0,即FALSE,所以,2月4日为工作日。
在单元格B2中输入下列公式即可。
=SUBSTITUTE(IFNA(VLOOKUP(A2,D:E,2,),REPT("非",MOD(A2,7)<2)&E$10),E$2,"非工作日")
这条公式巧妙利用REPT函数。
利用MOD函数给当前日期对7求余。这个返回的结果是5。
REPT("非",MOD(A2,7)<2)&E$10
如果MOD函数的结果小于2,则表明是周末。MOD(A2,7)<2的返回值是TRUE,因此REPT函数将“非”重复一次。结合单元格E10的数据,最终得到的结果是“非工作日”。若MOD(A2,7)<2的返回值是FALSE,则REPT函数不重复“非”字,则最终得到的结果是“工作日”。
利用VLOOKUP函数在备注中查找是否存在当前日期,并返回对应的文字描述。
IFNA(VLOOKUP(A2,D:E,2,),REPT("非",MOD(A2,7)<2)&E$10)
如果VLOOKUP函数返回错误值,则执行REPT("非",MOD(A2,7)<2)&E$10这部分。结果表明当前日期是工作日。
最后题目要求返回的“工作日”和“非工作日”,因此利用SUBSTITUTE函数将“法定假期”替换为“非工作日”。
在单元格B2中输入下列公式即可。
=SUBSTITUTE(IFERROR(VLOOKUP(A2,D$2:E$11,2,0),IF(WEEKDAY(A2,2)>5,"非工作日","工作日")),"法定假期","非工作日")
这条公式和第二条公式逻辑类似。这里只是稍微讲一下WEEKDAY函数。当WEEKDAY函数的第二参数是2时,表明其返回的结果从星期一到星期日所对应的数字是1-7。
本期内容练习文件提取方式:
链接:https://pan.baidu.com/s/1yWiH3Gv1g-oFhclG5TRXEQ?pwd=vzcx
提取码:vzcx
好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!