上一篇有人说没有实际例子,不好理解,于是这期哥们手搓了一个例子;
我搭建了一个日历表,主要功能就是根据当前月份,会显示出当月记录的一些事项;
用的到的函数主要是XLOOKUP,IF,COUNTIFS,CONCAT
这篇稿子的目的绝对不是让你在excel上搭一个屁用没有的记事簿,而是我想和你展示一下我在什么时候使用哪个函数,解决了什么样的问题,这样未来你遇到同样的情况,你就会想起有一个函数大概有什么功能,然后百度一下,解决你面临的问题(那时候你肯定不记得这个函数叫啥了)
这篇稿子两部分内容,一个是日历板块,另一个是记录功能;
先说下日历板块我的逻辑,首先日历里一定要有的两个元素:星期和日期,按照过往我们看电子日历的习惯,星期的排序是固定的,基于星期的形式来调整每月1号的位置,于是我也参考了这种形式来整理;
首先搭建星期框架:
按照极端情况来算,部分月份可能会跨六周,所以起六行备用;
万事俱备了,我们现在开始填写日期:
首先我们在第一行星期中进行判断,哪一个星期是和1号的星期相同,如果相同,那么就是一号,如果不相同,那就不是一号;(IF判断,前面讲过)
由于没有绝对引用,因此在我们复制公式内容填写下一个单元格的时候,公式错位了;
这个时候星期对比的内容就不再是“星期四”了,而是我的函数说明,因为公式复制的时候,也会随着调整引用的位置,但是有些内容我们不想随着位置发生变化,例如眼前的“星期四”,所以这里我们需要用"$"进行绝对引用;
这时候我们再复制这个函数的时候,被我们用"$"锁住的时候,这个单元格就不会再偏移了;
"$"使用逻辑:一个单元格有两部分组成,一个是列的字母,一个是行号的数字,例如A2 A3,"$"在那个部分的前面,就会锁住哪个部分,例如"$A3",这种情况下就是锁住了A列,不论公式复制到什么位置,只有3会变,但是A列不会变;反之亦然,"A$3",就是锁住了3行,而像我们上面使用的"$A$3"这种用法,就是把行和列都锁住了,不会有任何位移;后面会有个环节介绍"$"的其他用法;
当我们把公式铺满第一周,我们得到了我们想要的1号了,接下来要做的就很简单了,在1的基础上再加1,就是2号,以此类推,完成全月;
IF函数中,false的结果从文本改成了前一个单元格加1,周四及以后没有问题,但是前面四天出了BUG;
再次调整第一行,
两个IF函数嵌套,大致意思是如果周日和月初1号的星期不同,那么前一个单元格是不是空白的内容,如果不是空白就前一个单元格加1,如果是空白,那当前单元格也显示空白;复制整行之后没有问题了;
第一行搞定之后,开始处理后续的内容;由于一号只会出现在第一周,所以第二周开始我们就不判断一号的位置,用一个加法完成日期的加减就好了,但是问题又来了;
我们出现了6月38号!但是问题不严重,我们现在需要知道另一个信息,这个月有多少天?
前面提到过,这些函数的作用了,这里不再细说了,大致意思是:2023年7月0日的日期数字是几,得出来的结果是30,因为2023年7月0号本身得计算结果是2023年6月30日(开个脑洞,DATE(2023,7+1,-1)这个运算结果会是几号?)
现在我们得到了本月的最大天数,那么后面的事情就好处理了;
还是IF函数,如果前一个单元格大于等于本月最大天数,那么当前单元格就返还一个空值,否则就前一个单元格加1;
到这,日历的部分就完成了;
内个,1600字了,已经够一篇,剩下的内容等下集吧;
最后放个成品图
#免责声明#
①本站部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
②若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
③如果本站有侵犯、不妥之处的资源,请联系我们。将会第一时间解决!
④本站部分内容均由互联网收集整理,仅供大家参考、学习,不存在任何商业目的与商业用途。
⑤本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与任何商业和非法行为,请于24小时之内删除!