如何在Excel中查找一周包含分割月的一周工作天数

问题描述 投票:0回答:2

我正在尝试获取一周的总工作天数,但也考虑到一周有 2 个独立的月份,天数应该只显示当月的天数。 即

Week Ending
09/07/2023 - 5 Days
16/07/2023 - 4 days
23/07/2023 - 5 Days
30/07/2023 - 5 Days
06/08/2023 - 1 Day (since 31/07/2023 is a part of Aug week)

我尝试放置正常的

NETWORKDAYS(E50,F50,$H$49:$H$61)
,但它只使用开始日期和结束日期,但没有考虑其中的几周可以有几个月。

excel excel-formula weekday
2个回答
0
投票

从问题中不清楚真实的情况,对于

7/16/2016
,我预计输出中有
5
天,因为一周中的所有天都是同一个月的一部分,即我会说
4
是拼写错误。我希望这个想法适用于您的实际情况,如果情况并非如此,请更新问题并让我知道。谢谢。

您可以手动计算如下。以下公式一次性溢出整个结果(公式 1):

=MAP(A2:A6-6, LAMBDA(s,SUM(N(MONTH(s+SEQUENCE(5,,0))=MONTH(s)))))

您可以使用

NETWORKDAYS
来获取数组解决方案,也许不太直观。这个想法是正确构建假期列表,如果月份不同,则排除该范围内的日期,或者在月份相同时定义范围外的日期(
e+1
e
,因为它是星期日,即非工作日):

=LET(end,A2:A6, MAP(end-6,end, LAMBDA(s,e,
 NETWORKDAYS(s,e, IF(MONTH(s+SEQUENCE(7,,0)) = MONTH(s),
  e + 1, s + SEQUENCE(7,,0))))))

这是输出:

条件

A2:A6-6
查找给定日期集 (
A2:A6
) 的前一个星期一,假设所有周末都是星期日。

注意:对于一般情况,要获取给定日期的前一个星期一(不一定是星期日),您可以使用:

A2:A6-WEEKDAY(A2:A6)-5

对于 公式 1,我们使用

MAP
函数来迭代所有开始日期 (
s
)。它假设工作日是从周一到周五,因此要生成它使用的一周中的每个工作日:
s+SEQUENCE(5,,0)
。它使用
MONTH
函数来识别与
s
属于同一个月的工作日。我们使用
N()
将比较转换为
0
1
值,最后使用
SUM
函数将当月的工作日计算为给定的开始日期
s


0
投票

因为您的所有数据始终是星期日,所以只需计算参考日期减去 7 *基于当前日期的参考日期和月底之间的最小值之间的工作日。

=WEEKDAYS(A1-7;MIN(A1;EOMONTH(TODAY();0)))

无论如何,一旦日期是 8 月,最后一个单元格的输出就会更新,并将在 2 个不同月份的几周内显示不同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.