學Excel函數公式,怎能不會這個組合套路?

咱們對數據進行查詢時,常常會使用VLOOKUP函數。但有時咱們提取符合條件的結果是多個,而不是一個,這時候VLOOKUP就犯難了。html

舉個例子
以下圖,左側A1:C10是一份學員名單表,如今須要根據F1單元格的「EH圖班」這個指定的條件,在F2:F10單元格區域中,提取該班級所有學員名單。數組

F1的值是「EH圖表班」,須要在F2:F10單元格區域獲得圖表班相關成員的人名。
接下來就分享一個函數查詢方面的萬金油套路:less

INDEX+SMALL+IF函數

F2單元格輸入如下數組公式,按住Ctrl+Shift鍵不放,再按回車鍵,而後向下填充:
=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))),"").net

  1. 公式講解

IF(A$1:A$10=F$1,ROW($1:$10))
這部分,先判斷A1:A10的值是否等於F1,若是相等,則返回A列班級相對應的行號,不然返回FALSE,結果獲得一個內存數組:
{FALSE;2;3;FALSE;FALSE;FALSE;FALSE;8;FALSE;10}
再來看這部分:
SMALL(IF(A$1:A$10=F$1,ROW($1:$10)),ROW(A1))
SMALL函數對IF函數的結果進行取數,隨着公式的向下填充,依次提取第一、二、3……n個最小值,由此依次獲得符合班級條件的行號。
隨後使用INDEX函數,以SMALL函數返回的行號做爲索引值,在B列中提取出對應的姓名結果。
當SMALL函數所獲得的結果爲錯誤值#NUM時,意味着符合條件的行號已經被取之殆盡了,此時INDEX函數也隨之返回一個錯誤值,爲了不公式返回一個錯誤值,最後使用IFERROR函數進行規避,使之返回一個空文本""。excel

  1. 其它說明

不少時候,一些朋友喜歡把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)))&""
這兩個套路,經過引值真空單元格搭配&」」的方法,很巧妙的規避了錯誤值的出現,並且公式的長度獲得了精簡,是IFERROR函數未出現前處理錯誤值的經常使用技巧。
只是當公式的查找結果爲數值或者日期時,這個方法會把數值變成文本值,並不利於數據的準確呈現以及再次統計分析。
好比一個簡單的SUM求和,對於此類文本數據的統計都是麻煩的,緣由是大部分統計函數都忽略文本值,不予計算。
因此一般仍是建議你們使用IFERROR函數來處理錯誤值。htm

  1. 練手題

最後留下一道練手題,以下圖,根據A1:C10區域的數據,將E列相關班級的姓名,填充到F2:I5區域。索引

固定連接:http://www.excelhome.net/less...內存

相關文章
相關標籤/搜索