weeknum返回一年中的第几周

你好,我是刘卓。欢迎来到我的公号,excel函数解析。昨天我和你分享了weekday的用法,不知道你学习了没有。今天要和你分享的函数是weeknum,它返回一个日期是一年中的第几周。
-01-
函数说明
weeknum返回某个日期在一年中的周数,每年1月1日所在的周是该年的第1周。它和weekday一样也有两个参数,语法结构如下:
WEEKNUM(serial_number,[return_type])

第1参数Serial_number :代表一个日期。可以是返回日期的任意值。

第2参数Return_type :代表返回类型的数字。用来确定一周的第一天是从星期几开始,有多种类型,像weekday的第2参数那样。从下图可以看出,类型2是我们中国的习惯,一周的第一天是从星期一开始。
-02-
示例解释

通过下面几个简单的例子,来学习下它的用法。weeknum第1参数写日期,第2参数选2,代表中国的习惯。首先看2020/1/1,这个日期是2020年的第1天,那么它所在的周肯定是第1周。你也可以参考下图的日历。2020年的第1周有5天,从1月1号开始到1月5号结束。
再来看2020/1/8,它在2020年的第2周,所以返回2。还是参考上图的日历,2020年的第2周是从1月6号开始到1月12号结束。2020/4/9你自己去算一下是否是第15周。
-03-
具体应用

1.计算日期是一年中的第几周
有了上面的示例说明,这就很简单了吧。在B9单元格输入公式=WEEKNUM(A9,2),向下填充。
2.计算下列日期是当月的第几周
比如2020/4/8所在的月份是4月,那么它在2020年4月份是第几周?现在求的是在一个月中的周数,而不是在一年中的周数。从日历中可以看出2020/4/8是4月的第2周。那该怎么算呢?公式为=WEEKNUM(A17,2)-WEEKNUM(EOMONTH(A17,-1)+1,2)+1。
思路是用当前日期在一年中的周数减去月初日期在一年中的周数,再加1。还是用2020/4/8说明,第1步计算出2020/4/8在一年中的周数,公式为=WEEKNUM(A19,2),得到的结果是15,如上图C列所示。
第2步计算出2020年4月月初在一年中的周数,也就是2020/4/1在一年中的周数,公式为=WEEKNUM(EOMONTH(A19,-1)+1,2),得到的结果是14,如上图D列所示。eomonth向前推1个月,得到上月月末的日期,再加1,得到当月月初的日期。
第3步用第1步的结果减去第2步的结果,公式为=WEEKNUM(A19,2)-WEEKNUM(EOMONTH(A19,-1)+1,2),得到的结果是1,如上图E列所示。
第4步用第3步的结果再加1,因为上一步的结果把4月的第1周也给减去了,所以要加1补回来,这样才符合我们在日历中看到的周数。
除了用上面的方法,还可以用lookup,frequency等。这里说一下lookup的公式吧,公式为=LOOKUP(A17,A17-DAY(A17)+1-WEEKDAY(A17-DAY(A17)+1,2)+ROW($1:$6)*7-6,ROW($1:$6))。
思路是找出下图红色框标出的6天,作为lookup的第2参数。为什么选这6天呢?我们知道一个月最多只有6周,而且现在要用lookup,所以把这6天当做6周,而且它们也都是每一周的最小值。
当前日期作为lookup的第1参数,也就是在下图标出的6天中查找当前日期,比如当前日期是2020/4/8,那么找到的肯定是2020/4/6。然后返回2020/4/6对应的周数,也就是第3参数,第3参数用的是ROW($1:$6),刚好和第2参数的6天相对应。那么2020/4/6对应的就是2。
那么现在的问题就是如何找到这6天的日期,思路是通过当前月初的日期2020/4/1,找到上周末的日期2020/3/29。然后再给上周末的日期加1,8,15,22,29,36就得到了这6天的日期。
3.计算指定的年月有几周
这里年月用控件设置了一下,点击箭头可以改变。计算某年某月有几周。比如2020年4月有5周。其实这个题和上个题目差不多,只要求出每个月最后1天在当月是第几周,就求出了当月有多少周。但是我们现在要换一种思路。公式为=COUNT(0/FREQUENCY(WEEKNUM(DATE(B25,B27+1,)-ROW(INDIRECT("1:"&DAY(DATE(B25,B27+1,))))+1,2),ROW(1:53)))。公式看起来挺长的,其实也不难。
思路是构建出每个月所有的日期,也就是从1号开始到最后1天的日期。比如选择2020年4月,那么就要构建出2020/4/1到2020/4/30的所有日期。然后用weeknum算出4月的所有日期在一年中的周数,得到的结果肯定有重复的,比如2020/4/6到2020/4/12返回的周数肯定都是相同的。最后我们只要统计出不重复的个数,那么就是4月的周数。
统计不重复的个数用的是frequency,第1参数就是用weeknum返回4月的所有日期在一年中的周数,第2参数用的是ROW(1:53),因为一年最多有53周。其他的方法参看文件。
链接:
https://pan.baidu.com/s/1l1pAKbvr-4sTcABLNFBIqw
提取码:3m0i
(0)

相关推荐