Vlookup函數只會釣魚、不會捕魚【Excel分享】

Vlookup函數只會釣魚、不會捕魚

大家好,今天和大家分享"Vlookup函數只會釣魚、不會捕魚",vlookup匹配只能返回一個結果,當有多個結果的時候就不行了,數據源是前3列,根據E列的姓名,查找多個結果,放在F列,G列,如下圖?Vlookup函數只能釣魚,大家都知道只能返回一個結果,那麼我們如何寫一個捕魚的公式呢,可以根據E列的姓名,返回多個結果呢?

一、捕魚公式

1、公式截圖

2、公式

=INDEX(B:B,SMALL(IF($A$1:$A$10=$E2,ROW($A$1:$A$10),2^20),COUNTIF($E$2:$E2,$E2)))

3、公式解釋

  • IF($A$1:$A$10=$E2,ROW($A$1:$A$10),2^20)如果單元格區域$A$1:$A$10有等於"小老鼠",那麼就返回小老鼠所在的行號,否則就返回2^20最大行號,2^20=1048576

  • 用第幾小函數Small,把if函數得到結果排序一下,一般情況第幾小,small函數的第2參數會用Row(A1),因為這個下拉會產生1,2,3……,但是我們這裡不能用Row,用了countif函數

  • COUNTIF($E$2:$E2,$E2)這個函數按條件統計單元格的個數,參數只有二個,第1參數:條件所在的單元格區域,一定要是單元格區域;第2參數條件,這公式巧妙就在第1參數,鎖住頭不鎖住尾,也就是你下拉公式時,單元格區域$E$2:$E2,前面這個E2不會變,冒號後面這個E2的行號會不斷增加變大,也就是單元格區域不斷擴大。這樣就可以動態的統計第幾小。

  • 最後外面嵌套一個index函數,index函數有3個參數,由於數據源里的列欄位的順序和查找值要返回的數據保持了一致,所以index函數只用2個參數,第1參數選擇整個B列,第2參數就是small函數得到的第幾小?

推薦閱讀:

ROW函數的用途
一對多查找,用 Vlookup 函數太Out了!
函數中傳入的參數是可變與不可變類型會怎樣?
【Excel函數教程】SUM函數的取代函數SUMPRODUCT
Excel公式與函數之美11:小而美的函數之SMALL函數

TAG:分享 | 函數 | 釣魚 | Excel | 捕魚 |