大数跨境
0
0

不要被问题的表象迷惑了

不要被问题的表象迷惑了 Excel数据分析之道
2020-04-03
2


群里有一个人问了这样的一个问题:如何找出离今天最近的日期?例如,假设今天是2020年4月3日,距今天最近的2020-4-1。这里假设日期没有超过今天的以后的日期。



如果日期已经升序排列,那么最后一个单元格日期,肯定就是距今天最近的日期了,此时,可以使用比较烧脑的公式:


=LOOKUP(1,0/(B2:B1000<>""),B2:B1000)


其实,我们大可不必使用这样的公式。因为,既然是跟今天最近的,那么计算最大值不就可以了吗?在这个日期列表中,跟今天最接近的日期,肯定就是最大值了,因此,可以使用更为简单的公式:


=MAX(B:B)


上述的第一个公式,基本原理就是找最后一个不为空的单元格数据。而第二个公式,则无需考虑单元格是否为空的问题。


不过,如果这个日期列表中,也存在今天以后的日期呢?此时如何把今天日期以前的、跟今天最近的日期找出来?下图就是一个示例。



这样的情况,要稍微复杂点了。首先不允许使用命令按钮做排序处理,更不允许把今天以后的日期删除(你可能有“不正经”的想法:把今天以后的日期删除就能简化了啊)。


这样的问题,解决方法是很多的。


例如,上面的“不正经”想法就是一个很奇妙的想法。你不让我亲自动手真实不虚地删除今天以后的日期,那么我利用IF函数进行删除行不行?这样,就有了下面所示的一个奇妙的公式(数组公式):


=MAX(IF(B2:B14<=E2,B2:B14,""))


这个公式的原理就是,判断每个单元格日期是不是今天以前的日期,如果是,就留下来,如果是今天以后的日期,就剔除掉,然后再在这个处理以后的日期列表中计算最大值。我都为这个想法感到震惊了。


我们也可以变得不简单点,使用VLOOKUP函数的模糊查找来解决。不过,要做模糊查找,必须将日期做升序排序,这个可以使用SMALL函数来解决,然后从这个排完序后的日期列表中寻找小于或等于今天的最大值好了。此时,公式就跟着你也变得复杂起来:


=VLOOKUP(E2,SMALL(B2:B14,ROW(B1:B13)),1)


这个思路也是很奇妙的,可以训练你对VLOOKUP函数的模糊查找有更深的理解和认识。


我认为,学习Excel不是套用函数公式,不是照抄别人作业,而是要不断训练自己的逻辑思路,训练解决问题的能力。因此,Excel特别忌讳碎片化学习,而是要系统学习,灵活运用


插播一个系统学习Excel的小广告吧。


为方便大家系统学习,我对课程体系进行了重新梳理,设计了新的系列课程,并录制了系列视频,上传到了千聊直播间,直播间链接如下:


https://m.qlchat.com/wechat/page/live/2000000952426937



目前已经上传了3门课程,共2560分钟(43小时),可以单独付费观看;也可以购买365元/年的VIP会员,直播间内的所有收费的、免费的课程,统统可以任意观看。


市场上,似乎找不到这样高性价比的课程了,关键是跟韩小良老师学啊。现在,你仅仅需要花365元,就可以免费听直播间里的43小时系列课程(还不算一些单课),以后我还会陆续录制并其他的系列课程。




学习无止境,后面将陆续上传Excel函数公式应用课程,图表可视化应用课程,Power Query数据建模课程,VBA课程,财务应用系列课程,人力资源数据分析系列课程,销售分析系列课程,生产管理系列课程,等等,敬请关注。


再重复一遍:如果您单独购买了某个系列课程,或者购买了会员,请加我微信,以便发您学习课件资料。我微信是:


hanxiaoliang2013






【声明】内容源于网络
0
0
Excel数据分析之道
全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
内容 1106
粉丝 0
Excel数据分析之道 全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
总阅读3
粉丝0
内容1.1k