問題:
有一朋友傳給我樣例數據如下:
![]()
現在,需要查找規定產品的最后銷售日期,如何實現?
比如:查找 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
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.