分享

查找数据别总是VLOOKUP,这兄弟俩也同样优秀,尤善于处理复杂问题!

 EXCEL应用之家 2022-09-14 发布于上海


送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

【置顶公众号】或者【设为星标】及时接收更新不迷路



小伙伴们好,今天要和大家发分享一道关于数据查找的题目。题目是这样子的:



我们要从左侧的源数据中查找并提取对应商品的生效价格。思考十秒钟,该如何操作呢?


01

我曾经写过一篇有关于FREQUENCY函数的帖子。它是处理这类问题的最佳工具。



在单元格H2中输入公式“=LOOKUP(,0/FREQUENCY(0,(($C$2:$C$17-G2<=0)*($A$2:$A$17=F2)*($C$2:$C$17)-G2)^2),$D$2:$D$17)”,回车后向下拖曳即可。

思路:

这里使用了FREQUENCY函数的一个经典用法。

  • $C$2:$C$17-G2<=0部分,条件之一,生效价格的日期不能迟于给定的查询日期

  • $A$2:$A$17=F2部分,条件之一

  • ($C$2:$C$17-G2<=0)*($A$2:$A$17=F2)*($C$2:$C$17)部分,返回满足条件的所有日期

  • FREQUENCY(0,(($C$2:$C$17-G2<=0)*($A$2:$A$17=F2)*($C$2:$C$17)-G2)^2)部分,这个是求两个日期(数值等)间距最小的常用套路之一。两个值间距最小,那么他们之间差的平方差也一定最小。利用FREQUENCY函数可以定位到最小的那个值

  • LOOKUP函数经典应用,不必多说了


02

观察一下源数据。由于源数据在排列时时间是升序排列的,因此我们就可以省略$C$2:$C$17-G2<=0这一个条件,并直接使用LOOKUP函数了。



在单元格H2中输入公式“=LOOKUP(G2,IF($A$2:$A$17=F2,$C$2:$C$17),$D$2:$D$17)”并向下拖曳即可。

思路:

这里注意不能使用($A$2:$A$17=F2)*($C$2:$C$17)这样的形式,而只能使用IF函数来嵌套。原因是,IF函数将返回{FALSE;FALSE;43971;43996;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}的形式,数据依然是升序的。而($A$2:$A$17=F2)*($C$2:$C$17)的形式则返回的是{0;0;43971;43996;0;0;0;0;0;0;0;0;0;0;0;0},这并不是升序排列,所以LOOKUP函数会出错了。

好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

推荐阅读

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多