當數(shù)據(jù)源中符合查找條件的值有多個時,當需要進行一對多查找時,記得用函數(shù)中這個經(jīng)典組合!
當然,我們今天不講VLOOKUP的這個解法,它屬于低效偏冷的解法,僅供感興趣的朋友籍此開拓下VLOOKUP的用法思路,所以此處就不再細講了。
今天說一個函數(shù)查詢方面的萬金油套路:Index Small IF。
F2單元格輸入以下數(shù)組公式,按住Ctrl Shift鍵不放,再按回車鍵,然后向下填充:
=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))),'')
這個公式看起來可就比上面那個VLOOKUP的解法苗條養(yǎng)眼多了,坦白的說,很搭俺星光十年后的匪號——小清新。
imgLoadingIF(A$1:A$10=F$1,ROW($1:$10))
這部分,先判斷A1:A10的值是否等于F1,如果相等,則返回A列班級相對應的行號,否則返回FALSE,結果得到一個內存數(shù)組:
{FALSE;2;3;FALSE;FALSE;FALSE;FALSE;8;FALSE;10}
SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))
SMALL函數(shù)對IF函數(shù)的結果進行取數(shù),隨著公式的向下填充,依次提取第1、2、3……n個最小值,由此依次得到符合班級條件的行號。
隨后使用INDEX函數(shù),以SMALL函數(shù)返回的行號作為索引值,在B列中提取出對應的姓名結果。
當SMALL函數(shù)所得到的結果為錯誤值#NUM時,意味著符合條件的行號已經(jīng)被取之殆盡了,此時INDEX函數(shù)也隨之返回一個錯誤值,為了避免公式返回一個錯誤值,最后使用IFERROR函數(shù)進行規(guī)避,使之返回一個假空:””。
很多時候,一些朋友喜歡把INDEX SMALL IF的套路寫成:
=INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10),4^8),ROW(A1)))&''
或
=INDEX(B:B,SMALL((A$1:A$10<>F$1)/1% ROW($1:$10),ROW(A1)))&''
這兩個套路,通過引值真空單元格搭配&””的方法,很巧妙的規(guī)避了錯誤值的出現(xiàn),而且公式的長度得到了精簡,是IFERROR函數(shù)未出現(xiàn)前處理錯誤值的常用技巧。只是當公式的查找結果為數(shù)值或者日期時,這個方法會把數(shù)值變成文本值,并不利于數(shù)據(jù)的準確呈現(xiàn)以及再次統(tǒng)計分析。
比如一個簡單的SUM求和,對于此類文本數(shù)據(jù)的統(tǒng)計都是麻煩的,原因是大部分統(tǒng)計函數(shù)都忽略文本值,不予計算。
所以通常還是建議大家使用IFERROR函數(shù)來處理錯誤值。
最后留下一道練手題,如下圖,根據(jù)A1:C10區(qū)域的數(shù)據(jù),將E列相關班級的姓名,填充到F2:I5區(qū)域?!笆?,祝按,揮手,下次再見嘍。
imgLoading照例示例文件下載:百度網(wǎng)盤
聯(lián)系客服