編按:哈嘍,大家好!如何根據日期和名稱等多個條件查詢相應時間範圍或者時間段所對應的產品價格、數量呢?品名、編號等都需要精確查找,但不需要對日期進行精確查找,而是查找最接近或等於查找日期的某個時間段。趕緊看看下面的文章吧!學習更多技巧,請收藏關注部落窩教育excel圖文教程。
【問題說明】
小王負責策劃公司商品的促銷活動,需要根據商品特性和市場反應做一些非常有針對性的單品促銷方案,這些年來僅促銷的價格清單就有成百上千條。
最近公司領導讓小王做一個針對以往活動價格的查詢模板,要求輸入商品名稱和查詢日期就能調取對應的執行價格,類似於下面的效果。
圖中只是隨便列舉了一些數據,實際的數據量要更大。例如要查詢商品2在2020年6月20日所執行的價格,就要在活動明細(A~D列)中找到商品2,再看看查詢日期屬於對應的哪一個方案,從而確定出6月20日的價格是600。
領導的需求小王算是搞明白了,但這要怎麼實現呢?
小王陷入了沉思……
【思路分析】
很明顯,這個問題屬於多條件查找,條件1是品名,條件2是日期,要查找的結果是價格。但是有一個問題,品名是可以精確對應的,但日期不行,需要對應的是查找日期之前最近的一個日期。
例如商品2可能就有很多種方案,查找6月20日的價格,就要在商品2的方案中找到6月20日之前的,並且是最接近的那個日期,也就是6月14日開始執行的價格。如果6月20日作為條件,在對應的條件區域中正好存在的可能性很小。當然也可以將條件設置為小於等於查詢日期,但是這樣的話,就有可能存在多條記錄,如何確保在小於查詢日期的多條記錄中匹配到的是最後一條呢?
「當查找區域中有多個滿足條件的數據時,LOOKUP會與最後一條數據進行匹配,並得到結果區域中對應的數據。」利用這一特性,就可以解決按某個條件查找最新數據的問題。
【函數公式】
使用LOOKUP函數進行多條件查找的套路為:
=LOOKUP(1,0/((查找範圍1=查找值1)*(查找範圍2=查找值2)*……*(查找範圍n=查找值n)),結果範圍)
對於小王的這個問題來說,只需要兩個條件,按照這個套路寫出的公式是這樣的:
=LOOKUP(1,0/(($A$2:$A$17=F2)*($C$2:$C$17<=G2)),$D$2:$D$17)
驗證結果發現個別地方會得到錯誤值,如圖所示。
錯誤的原因顯而易見,查找的日期早於該商品的最早生效日期。
如何將這種錯誤值替換成文字性的說明呢?學習更多技巧,請收藏關注部落窩教育excel圖文教程。
這當然難不住小王了,只需要在LOOKUP函數的外面嵌套一個IFERROR函數就可以搞定,完善後的公式為:
=IFERROR(LOOKUP(1,0/(($A$2:$A$17=F5)*($C$2:$C$17<=G5)),$D$2:$D$17),"無此日期對應價格")
將錯誤值顯示為「無此日期對應價格」,結果如圖所示。
至此,小王完美的完成了領導交代的任務,獲得了大家的一致好評。
但是小王心裡清楚,通過這個問題還是發現了自己的基本功不夠牢固,還需要好好的總結一下。
【心得小結】
在這個實例中,有下面幾個很關鍵的問題需要著重強調。
1.遇到問題一定要冷靜,明確問題的類型才能找到解決問題的突破口,小王能夠準確的將這個問題定性為多條件查找,就是找準了解決問題的方向。
2.對於一些不太常用的函數以及一些函數的常用套路,或許不能應用自如,但是有印象很重要,這樣在查找資料時就能很快的找到線索。
3.一些函數或公式的重要特點必須牢記,例如存在多個符合查找條件的結果時,VLOOKUP找到的是第一個,而LOOKUP找到的是最後一個。
4.多個函數的嵌套往往不是一蹴而就的,而是在不斷測試的過程中逐步完善的,分析問題解決問題的過程也是一種很有效的學習方式。
5.關於LOOKUP函數的應用,如果只單純套用公式模型是比較容易的,但是要真的搞明白這個函數的話,之前的相關教程還得好好再研究一番。
只有不斷的修煉,不斷的強大,才能無懼於未來遇到的一切問題。小王這樣鼓勵自己,充滿信心的等待下一個新的挑戰。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
****部落窩教育-excel按時間分段查找****
原創:老菜鳥/部落窩教育(未經同意,請勿轉載)
更多教程:部落窩教育