Excel函数高手,原来是这样思考的!
来源于:数据化管理,作者,刘振雄
我们在使用Excel时,函数是最基本的知识,玩好函数就可以帮我们快速解决很多问题了!
在我们制作分析模板的时候,学会灵活地构造日期维度,是最基础的技能,更是必须掌握的技能。但是对于日期函数,大家都觉得看起来都很简单,用起来却需要有清晰的逻辑。
当你把所有的逻辑组合在一起时,你就能做出以下这样的智能对话提示,在模板中用于提醒、业务预警是非常好的!
上图中的“你好,今天是X年X月X日,星期X”,这个的实现相信大家都会,但是这里我给大家补充一个更快捷的方法,只用到2个函数就实现了!
="你好,今天是"&TEXT(TODAY(),"yyyy年mm月dd日 | aaaa")
当然,常用的一些日期函数,我们也是必须要掌握使用的:
year, month,day,date, today, eomonth,weekday
以上的这些日期函数,都觉得很简单吧?我相信大家在单独地使用它们时,都可以玩得很熟练!
但是要玩转函数,关键的是函数的嵌套,需求的逻辑。
下面就以几个和日期相关的案例,看完你肯定会有深刻的感受~
1、求所在月的第1天
在我们的日报中,经常会看本月截止到昨天的销售额,所以我们要求出本月的第一天是哪一天,然后才方便后续借助sumifs等函数进行汇总计算。
① 最基本的思路
所在月的月份数:month(today()),所在月的年份数:year(today()),再用date函数,把年月日组合成标准日期:
=DATE(YEAR(TODAY()),MONTH(TODAY()),1)
② 用今天的日期减去今天的天数再加1
例如今天是2019-11-17,用今天的日期再减去17,则得到2019-11-00(实际上没这样的显示),实际的结果则是2019-10-31,然后再加上1之后就是2019-11-01了
=TODAY()-DAY(TODAY())+1
③ 用eomonth算出上月的最后一天再加1
=EOMONTH(TODAY(),-1)+1
ps:很多人觉得eomonth不好理解,其实它就是 End of Month的缩写,表示一个月的最后一天
以上三种办法都可以实现同一个结果,①是最基本的思路;②③的方法其实思路是一样的,公式也更简洁,殊路同归!
2、求上周的第一天和最后一天
先来理解一下,“上周”是什么意思?
今天是2020年11月5日(周四),那么上周就是11.2(周一)~11.8(周日)这个星期;如果今天是2020年11月16日(周一),则上周就是11.9(周一)~11.15(周日)
同时我们是要结合today()去计算的(这样才是动态的),所以是必须用today()去减一个数!!!
那么应该减去多少呢??
用上面的案例来尝试一下,若今天是2020年11月8日(周日),要求上一个周日就要减去7,今天是2020年11月9日(周一),要求上一个周日就要减去1。所以你就能发现:要求得上一个周日,是要减去当天的星期数!
所以「求上周日的日期」的公式就能写出来了:
=TODAY()-WEEKDAY(TODAY(),2)
接下来如果要求上一个周一,就用上面这个结果减去6即可得出!
看完这个案例,大家有没有真切地觉得:写公式其实就是写逻辑!
3、根据日期算出所在季度
Excel没有现成的季度函数,所以我们要想办法去梳理逻辑,才能把求季度的公式写出来!
季度,就是跟月份有关系,其中的关系是:
1、2、3月→1 季度, 4、5、6月→ 2 季度
7、8、9月→ 3 季度, 10、11、12月→ 4 季度
① 看着上面的关系,最笨的方法应该要有思路了,因为以上就是所有的关系了!
直接用choose穷举出来:
=CHOOSE(MONTH(A1),1,1,1,2,2,2,3,3,3,4,4,4)
意思就是,根据日期算出月份,然后如果月份是1,2,3的话,我都通过choose选择前3项,返回来都是1,这样就解决问题了!
方法太low?!其实不是,以上这种方式还很方便你去设置【财季】,有些不是自然季度的话,你就可以通过上面的公式来实现,例如假设每年的10月1日是财年的起始日,则你要算财季的话,可以这样用:
=CHOOSE(MONTH(A1),4,4,4,1,1,1,2,2,2,3,3,3)
因为只有12个月,所以穷举出来,就可以充分的自定义呀~
② 再换一个方向:1,2,3怎么能变成1?1就是1,不用想;2变成1,没思路;3变成1,3除以3。然后再想1/3,2/3怎么变成1?这里就还需要结合到roundup函数,可以把小数点向上进位的特点,就可以把零点几的小数也变成1了。
当然直接在Excel里进行推算,会更容易让你发现规律!
然后因为3个月为一个季度,正好后面的月份数,也是符合这样的规律,所以就可以写出公式:
=ROUNDUP(MONTH(A1)/3,0)
③ 还有没有其他解法?当然有!而且是最简短,最巧妙的公式写法!直接看答案:
=LEN(2^MONTH(A1))
例如=LEN(2^MONTH("2019-9-22")),返回的结果就是3
解释:2的1~12次方结果值的长度,正好与对应季度数一样。
这种方法确实是非常巧妙,其实是源自于对数据的敏感,对数据的观察,然后爱钻研的精神!
好的,今天关于日期相关的公式就分享到这里,希望大家能明白到:
写公式就是写逻辑!
当你想写某公式没思路时,不妨先多花时间来整理你的需求,梳理清楚逻辑后,相信写起公式来就能得心应手了~