第2个回答 2022-06-21
截图没有行号和列标,且不知日期是否为日期数据(姑且当做日期数据吧),写的公式不一定与实际工作表相符。此外,尚需要把法定假日列表出来。
工作日上班天数:
=COUNT(0/(HLOOKUP(WORKDAY(B$1,COLUMN(A:AA)-1,假日列表),B$1:AF2,ROW(2:2),)<>"休"))
周末及法定假日上班天数:
=COUNT(0/(B2:AF2<>"休"))-工作日上班天数
公式说明:
WORKDAY:计算出B1开始的系列工作日(去除周六、周日和假日列表列出法定假日日期后),可能超出本月,但没关系。
HLOOKUP:根据上面计算的工作日,在B1:AF1中去精确匹配,返回公式所在行的记录(不考虑有空单元格),并判断是否不为“休”(不考虑空单元格,即不为“休”就是上班——不管白班还是夜班),超出本月的日期肯定匹配不到,返回空值。
用0来除这些工作日不为休(TRUE)的结果,得到0,而0除空值出错
再后用COUNT计数,COUNT会忽略错误值,计数(0的个数)的结果就是工作日上班的天数。
所有上班天数,减去工作日上班的天数,就是周末或假日上班的天数。