Google sheets 第行中的CountIf日期为工作日
好的,我想做的是每个月计算工作日数,减去公共假日Google sheets 第行中的CountIf日期为工作日,google-sheets,countif,Google Sheets,Countif,好的,我想做的是每个月计算工作日数,减去公共假日 B2 -- the current year E2:E13 -- the first day of each month F2:F13 -- the amount of days (workday or otherwise) in that month, that year G2:G13 -- the amount of WORK days in that month (i.e. the formula I'm trying ot wri
B2 -- the current year
E2:E13 -- the first day of each month
F2:F13 -- the amount of days (workday or otherwise) in that month, that year
G2:G13 -- the amount of WORK days in that month (i.e. the formula I'm trying ot write)
A8:A -- the public holidays
我可以取下这些并创建一个公式(此处用于G2
)
(它利用日期格式dd.mm.yyyy
)
问题是,其中一些假期只有半天休息,而这个公式将给人们全天休息
因此,一种方法可以是,在那个月,每有被错误地算作全天休息的半天,再加上半天
假设我有
C8:C -- is the holiday in the A cell of the same row a half-day?
这就把我们的公式变成了
=NETWORKDAYS(CONCATENATE("1.",MONTH(E2),".",$B$2),CONCATENATE(F2,".",MONTH(E2),".",$B$2), $A$8:A)+COUNTIFS($A$8:A,">"&EOMONTH(E2,-1),$A$8:A,"<"&EOMONTH(E2,0)+1,$C$8:C,TRUE)*0.5
不过,我不知道如何像那样引用这一行
简单的解决方法是使用一个helper列来计算布尔值,但这很难看,因为与“半天”列不同,我们不希望用户能够修改这些值,因此让他们看到该列只会混淆它们。)
如何在countifs
中写入条件?更新公式:
我想这应该可以。虽然可能还有其他的,甚至更整洁的方法
如果在筛选器()中找到匹配项,它将在半天内加回
=数组公式(网络日(E2,EOMONTH(E2,0),A$8:A$18)+IFERROR(过滤器(C$8:C$18,EOMONTH(A$8:A$18,0)=EOMONTH(E2,0),C$8:C$18,工作日(A8:A18,2更新公式:
我认为应该这样做。虽然可能有其他的,甚至是更整洁的方法
如果在筛选器()中找到匹配项,它将在半天内加回
=ARRAYFORMULA(NETWORKDAYS(E2,EOMONTH(E2,0),A$8:A$18)+IFERROR(FILTER)(C$8:C$18,EOMONTH(A$8:A$18,0)=EOMONTH(E2,0),C$8:C$18,WEEKDAY(A8:A18,2我找到了一个不使用countifs
的简单解决方案。您要查找的结果是三个值之和:
- 结果=一个月内的工作日-全休日-半休日*0.5
为此,我们将首先计算一个月的工作日,工作日减去全天假期,工作日减去半天假期
- WD:
=网络日(串联(“1.”,月(E5),“,$B$2”),串联(串联(F5,“,”,月(E5),“,$B$2))
- WD_FULL_H:
=网络天数(串联(“1.”,月(E5),“,$B$2),串联(F5,”,月(E5),“,$B$2),过滤器(A8:A,C8:C=FALSE))
)
- WD_HALF_H:
=网络天数(串联(“1.”,月(E5),“,$B$2),串联(F5,”,月(E5),“,$B$2),过滤器(A8:A,C8:C=TRUE))
通过这种方式,我们确保任何与公共假日重合的假期都不会改变最终结果。接下来,我们计算最后的工作日。为此,我们需要得到一个月有多少个全天和半天假期,我们通过减去该月的工作日数得到:
- 最终WD:
WD-(WD-WD\u FULL\u H)-(WD-WD\u HALF\u H)*0.5
简化:
- 最终WD:
WD\u FULL\u H-(WD-WD\u HALF\u H)*0.5
最后,在没有辅助计算的情况下:
- 最终WD:
我找到了一个不使用countifs
的简单解决方案。您要查找的结果是三个值的总和:
- 结果=一个月内的工作日-全休日-半休日*0.5
为此,我们将首先计算一个月的工作日,工作日减去全天假期,工作日减去半天假期
- WD:
=网络日(串联(“1.”,月(E5),“,$B$2”),串联(串联(F5,“,”,月(E5),“,$B$2))
- WD_FULL_H:
=网络天数(串联(“1.”,月(E5),“,$B$2),串联(F5,”,月(E5),“,$B$2),过滤器(A8:A,C8:C=FALSE))
)
- WD_HALF_H:
=网络天数(串联(“1.”,月(E5),“,$B$2),串联(F5,”,月(E5),“,$B$2),过滤器(A8:A,C8:C=TRUE))
通过这种方式,我们确保任何与公共假日重合的假期都不会改变最终结果。接下来,我们计算最后的工作日。为此,我们需要得到一个月有多少个全天和半天假期,我们通过减去该月的工作日数得到:
- 最终WD:
WD-(WD-WD\u FULL\u H)-(WD-WD\u HALF\u H)*0.5
简化:
- 最终WD:
WD\u FULL\u H-(WD-WD\u HALF\u H)*0.5
最后,在没有辅助计算的情况下:
- 最终WD:
请分享一个测试sheet@marikamitsos完成:)@MattKing是的,但这并不能解决我的问题,就像你读了问题一样,你会看到我不想要假期,我想要半个假期。;@User1291我意识到在我发布和删除后。在下面的帖子中回答请共享测试sheet@marikamitsos完成:)@马特金:是的,但这并不能解决我的问题,就像你读了这个问题,你会发现我不想要假期,我想要半个假期一样@User1291发布并删除后,我意识到。下面的线程中的答案最初发布了错误的公式。它已更新为包含工作日排除。最初发布了错误的公式。它已更新为包含工作日排除。一个右大括号对于WD来说太多了,但这是一个非常好的解决方案,谢谢。一个右大括号太大了纽约为WD,但这是一个非常好的解决方案,谢谢。
=NETWORKDAYS(CONCATENATE("1.",MONTH(E2),".",$B$2),CONCATENATE(F2,".",MONTH(E2),".",$B$2), $A$8:A)+COUNTIFS($A$8:A,">"&EOMONTH(E2,-1),$A$8:A,"<"&EOMONTH(E2,0)+1,$C$8:C,TRUE)*0.5
[...]+COUNTIFS([...], $A$8:A, NETWORKDAYS(ROW,ROW) > 0)*0.5
=ARRAYFORMULA(NETWORKDAYS(E2,EOMONTH(E2,0),A$8:A$18)+IFERROR(FILTER(C$8:C$18,EOMONTH(A$8:A$18,0)=EOMONTH(E2,0),C$8:C$18,WEEKDAY(A8:A18,2<6))/2))
=NETWORKDAYS(
CONCATENATE("1.",MONTH(E5),".",$B$2),
CONCATENATE(F5,".",MONTH(E5),".",$B$2),
filter(A8:A,C8:C=FALSE))
-
(NETWORKDAYS(
CONCATENATE("1.",MONTH(E5),".",$B$2),
CONCATENATE(F5,".",MONTH(E5),".",$B$2)))
-
NETWORKDAYS(
CONCATENATE("1.",MONTH(E5),".",$B$2),
CONCATENATE(F5,".",MONTH(E5),".",$B$2),
filter(A8:A,C8:C=TRUE)))
*0.5