打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
1月8日到3月10日之间有几个星期五?这个公式怎么写你会吗……
Excel基础学习园地
公众号“Excel基础学习园地”是一个免费发布Excel基础知识、函数应用、操作技巧、学习方法等资讯的公众号,请点击上方“Excel基础学习园地”添加关注,方便我们每天向您推送精彩资讯。

统计一段时间内有几个星期五,这个问题看似简单,但真要做起来好像也不是那么容易。既然要搞事情,就一次搞彻底,不仅统计星期五,把一周7天的个数全部算出来好不好……

这个问题一共收集了9种公式解法,公式来自我们的学员、老师,还有一些爱好者。以下为大家逐一展示。

因为篇幅问题,公式无法一一详解,只能对其中的要点做简短说明,太过基础的内容可以仔细加群了解,想学习的话也可以留言(目前有9.9元包月体验的活动哦)~~~

公式1

=COUNT(1/(WEEKDAY(ROW(INDIRECT($A2&":"&$B2)),2)=COLUMN(A1)))

公式解析:

WEEKDAY(日期,2),可以得到一个日期所对应的星期数,周一为1,周二为2,……,周日为7。

WEEKDAY=COLUMN(A1),是判断星期是否为指定的数字,COLUMN(A1)可以得到列号1,右拉时列号递增,实现了对比每个星期数的作用,对比的结果是逻辑值。

COUNT(1/逻辑值),当 逻辑值为FALSE时,相当于分母为零,除法会得到错误值,当逻辑值为TRUE时,分母为1,除法得到分子的值1(这个公式里的1可以用0或者任意数字),COUNT的作用是统计参数里数字的个数。

以上分析是针对单个日期而言,当变成一个日期区间时,就是一组日期了,WEEKDAY会得到一组星期,比较的结果就是一堆逻辑值,这个过程可以用F9功能键去分析:

TRUE对应的就是需要统计的星期,通过除法将不需要统计的都变成错误值,最后使用COUNT完成实际要统计的星期的个数。

公式的难点在于如何将日期区间变成一组具体的日期。这里用到两个知识点:

  1. 一组数字可以对应一组日期,同时日期也是数字的一种表现形式,在函数中,日期和数字大多数情况是没有区别的;

  2. 要构造一个数字序列,通常需要使用ROW函数,这个函数返回的是单元格区域(或者说是引用)中每个单元格(引用)的行号,如果要用函数构造出单元格区域,通常需要使用INDIRECT函数。

INDIRECT($A2&":"&$B2)的作用就是构造了一个通过单元格数据得到的引用区域:

将开始日期和结束日期的单元格格式转为常规可以看到这两个日期所对应的数字,将公式中的$A2&":"&$B2通过F9转换后可以看到这个结果。

在通过ROW函数,就可以得到两个日期之间的所有行号,这些行号都是数字,同时也是两个日期之间的所有日期。

用这些日期作为WEEKDAY的参数,结合开始介绍的那几个函数,共同完成了统计星期个数的任务。

PS:这个公式是数组公式,其中INDIRECT算是一个相对复杂一点的函数,其他几个函数比较容易理解。整个公式解释起来还是挺有难度的,基础好一点的估计都能看明白,如果还是不理解那就不是一时半会能说明白的了,建议老老实实去把基础弄扎实。后面的公式分析会稍微简洁一点。

公式2

=SUM(N(WEEKDAY(ROW(INDIRECT($A2&":"&$B2)),2)=COLUMN(A1)))

公式2的核心思路与公式1完全一样,只是在最后完成统计的时候,使用N函数将逻辑值转为数字,再用SUM完成求和。

关于N函数的用法,推荐一篇之前的教程:揭秘Excel里最短的函数:N函数

公式3

=SUM(N(MOD(ROW(INDIRECT($A2&":"&$B2))-2,7)=COLUMN()-3))

核心还是ROW-INDIRECT组合,只不过开始玩起了数学游戏,没有用WEEKDAY去算星期几,而是用MOD求余数,仅仅是因为MOD比WEEKDAY短一点吗,服你!

后面的COLUMN()-3只是为了凑数字,配合前面求余数的值。最后还是用SUM和N完成了统计。

公式4

=SUM(N(TEXT(ROW(INDIRECT($A2&":"&$B2)),"aaaa")=C$1))

继续在如何得到星期几上做文章,这次轮到TEXT出手了,格式代码"aaaa"是什么意思?自己去试一下明白了,不但明白,关键是还能记住!

如果连这个测试还不会做,来群里找我问吧……

公式5

=SUM(N(TEXT(ROW(OFFSET(A$1,$A2,,$B2-$A2)),"aaaa")=C$1))

公式5替换了一个核心函数INDIRECT,取而代之的是同样重量级的OFFSET函数。

值得一提的是用OFFSET取得这组数字的思路,OFFSET(A$1,$A2,,$B2-$A2),用的很是巧妙。

关于OFFSET的基本原理,再推荐一篇教程吧:初探offset函数

公式6

=SUM(N(LEN((ROW(INDIRECT($A2&":"&$B2))+MOD(7-COLUMN(B1),7))/7)<5))

ROW(INDIRECT($A2&":"&$B2)这部分能懂,MOD(7-COLUMN(B1),7)这部分也能懂,但是相加以后除以7是什么鬼,F9的结果是这样的:

相除的结果为整数的就是需要的数据,提示只能到这一步了。

明白这一点后面的就好理解了,用LEN计算出每个值的长度,统计长度小于5的个数就是最后需要的结果。

真的不理解我也没办法了,毕竟学霸的思路非同一般。

公式7、8、9一起来

前面的6个公式核心思路都很类似,同时都是数组公式,最后这三个公式完全颠覆了之前的思路,使用了一个新的核心函数NETWORKDAYS.INTL,关于这个函数的用法,推荐两篇相关教程:

1、NETWORKDAYS函数在工作日统计方面的应用案例

2、今天学了一个好洋气的Excel函数,学会了想哪天休息就哪天休息……

如果你能彻底搞明白这两个计算假期的函数,再来破解最后这三个公式的原理吧,最后这三个不是数组公式,不需要三键:

=NETWORKDAYS.INTL($A2,$B2,REPLACE("1111111",COLUMN()-2,1,0))

=$B2-$A2+1-NETWORKDAYS.INTL($A2,$B2,{12,13,14,15,16,17,11})

=B2-A2+1-NETWORKDAYS.INTL(A2,B2,10+{2,3,4,5,6,7,1})

今天的内容稍微有点多,我写的累,不知道大家看的累不累……

还是那句话,想学函数应用来找老菜鸟,九块九包月体验的活动还在进行中!

四月份安排了十二节实用的课程

五月份想学什么现在开始预约

体验整月课程只需9.9


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
INDEX的这个用法,很稀罕……
72个反向查找的公式套路,都看明白的就成精了!
利用Excel函数自动计算星期几和两个日期之间星期几的天数
数字、文本、逻辑值和“”,排排队,比大小
EXCEL中的TEXT函数详解
分享几个execl使用的小技巧,让你的效率快速提升
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服