问题:
有一朋友传给我样例数据如下:
打开网易新闻 查看精彩图片
现在,需要查找规定产品的最后销售日期,如何实现?
比如:查找 iPhone 15 Pro的最后销售日期:
打开网易新闻 查看精彩图片
五个公式:
公式1:
=IFERROR(TEXT(XLOOKUP(H2,$B$2:$B$21,$A$2:$A$21,"",0,-1),"yyyy-mm-dd"),"产品未找到")如下图:
打开网易新闻 查看精彩图片
思路分析:
核心思路:使用Excel 2021的新函数XLOOKUP进行查找
执行顺序:
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"),"产品未找到")如下图:
打开网易新闻 查看精彩图片
思路分析:
核心思路:将查找位置和取值分离
执行顺序:
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"),"产品未找到")如下图:
打开网易新闻 查看精彩图片
思路分析:
核心思路:利用LOOKUP的二分查找特性
执行顺序:
$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"),"产品未找到")如下图:
打开网易新闻 查看精彩图片
思路分析:
核心思路:在方案一基础上增加动态范围
执行顺序:
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基础上增加空值判断
执行顺序:
先判断H2是否为空
如果为空,直接返回空字符串
如果不为空,执行公式1的逻辑
双层错误处理
你喜欢哪一个? 你还有哪些公式可以实现? 请留言探讨。 本篇End
热门跟贴