问题

有一朋友传给我样例数据如下:

打开网易新闻 查看精彩图片

现在,需要查找规定产品的最后销售日期,如何实现?

比如:查找 iPhone 15 Pro的最后销售日期

打开网易新闻 查看精彩图片

五个公式

公式1:

=IFERROR(TEXT(XLOOKUP(H2,$B$2:$B$21,$A$2:$A$21,"",0,-1),"yyyy-mm-dd"),"产品未找到")

如下图:

打开网易新闻 查看精彩图片

思路分析:

  1. 核心思路:使用Excel 2021的新函数XLOOKUP进行查找

  2. 执行顺序

    • XLOOKUP在B列查找H2的值

    • 参数0表示精确匹配,-1表示从后往前搜索(找最后出现的位置)

    • 返回对应A列的日期值

    • TEXT函数将日期格式化为"yyyy-mm-dd"

    • IFERROR处理找不到的情况

公式2:

=IFERROR(TEXT(INDEX($A$2:$A$21,XMATCH(H2,$B$2:$B$21,0,-1)),"yyyy-mm-dd"),"产品未找到")

如下图:

打开网易新闻 查看精彩图片

思路分析:

  1. 核心思路:将查找位置和取值分离

  2. 执行顺序

    • XMATCH查找H2在B列最后出现的位置

    • INDEX根据位置从A列取出对应日期

    • TEXT格式化日期

    • IFERROR处理错误

公式3:

=IFERROR(TEXT(LOOKUP(2,1/($B$2:$B$21=H2),$A$2:$A$21),"yyyy-mm-dd"),"产品未找到")

如下图:

打开网易新闻 查看精彩图片

思路分析:

  1. 核心思路:利用LOOKUP的二分查找特性

  2. 执行顺序

    • $B$2:$B$21=H2产生TRUE/FALSE数组

    • 1/(...)将TRUE转为1,FALSE转为/0!

    • LOOKUP(2,...)查找比1大的值,返回最后一个1对应的值

    • TEXT格式化

    • IFERROR容错

公式4:

=IFERROR(TEXT(XLOOKUP(H2,INDEX(B:B,2):INDEX(B:B,COUNTA(B:B)),INDEX(A:A,2):INDEX(A:A,COUNTA(B:B)),"",0,-1),"yyyy-mm-dd"),"产品未找到")

如下图:

打开网易新闻 查看精彩图片

思路分析:

  1. 核心思路:在方案一基础上增加动态范围

  2. 执行顺序

    • COUNTA统计B列非空单元格数,确定数据范围

    • INDEX函数构建动态引用范围

    • XLOOKUP在动态范围内查找

    • 后续流程与公式1相同

公式5:

=IF(H2="","",IFERROR(TEXT(XLOOKUP(H2,$B$2:$B$21,$A$2:$A$21,"",0,-1),"yyyy-mm-dd"),"产品未找到"))

如下图:

打开网易新闻 查看精彩图片

思路分析:

  1. 核心思路:在公式1基础上增加空值判断

  2. 执行顺序

    • 先判断H2是否为空

    • 如果为空,直接返回空字符

    • 如果不为空,执行公式1的逻辑

    • 双层错误处理

你喜欢哪一个? 你还有哪些公式可以实现? 请留言探讨。 本篇End