「萬金油」公式,INDEX+SMALL+IF+ROW函數組合的三個應用案例解析

在excel中有一個“萬能”的函數組合,它們就是Index+small+If+row函數,它們被稱之為“萬金油”公式,主要就是因為這一組“萬能”函數組合在工作中應用廣泛,在N多種問題的解決方法上都出現過它們的身影。

接下來就給大家分享3個萬金油公式的應用場地。


1.一對多查找

一般數據查找常用的是VLOOKUP函數,但是VLOOKUP函數只能返回查詢區域的首個匹配的查詢結果,但這裡我們要查找的是一個姓名對應的多個產品,想要返回查找值對應的多個結果就需要用到“萬金油”公式。

在D2單元格輸入公式:=IFERROR(INDEX($B$2:$B$12,SMALL(IF($A$2:$A$12=$D$2,ROW($1:$11)),ROW(A1))),"")

此公式是數組公式,需要按 Ctrl+Shift+Enter 結束公式。

公式說明:IF($A$2:$A$12=$D$2,ROW($1:$11)) 用IF函數判斷A2:A12區域的值是否等於D2,如果等於則返回A列產品對應的行號,如果不等於返回FALSE。 按F9結果得到一個內存數組:{FALSE;2;FALSE;4;FALSE;FALSE;7;FALSE;FALSE;10;FALSE},得出4個相等的行號。

SMALL函數對IF函數結果進行取數 ,公式向下填充,依次提取1,2,3……N個最小值,最後用INDEX根據SMALL函數提取的行號得出結果。

最後,當SMALL函數得到的結果為錯誤值時,表示符合條件的行號已被提取完,所以INDEX也會返回錯誤值,為了避免返回錯誤值,用IFERROR函數返回假空

“萬金油”公式,INDEX+SMALL+IF+ROW函數組合的三個應用案例解析

2.提取數字

在A列混合數據中提取數字,C2單元格輸入公式:=IFERROR(INDEX($A$2:$A$12,SMALL(IF(ISNUMBER($A$2:$A$12)=TRUE,ROW($1:$11)),ROW(A1))),"") 按Ctrl+Shift+Enter 結束公式。

公式說明:IF(ISNUMBER($A$2:$A$12)=TRUE,ROW($1:$11)) 用ISNUMBER函數判斷A列中的數據是否是數字,是數字返回true,否則返回false,然後用IF函數再判斷ISNUMBER函數的結果是等於TRUE則返回對應的行號,其餘跟上一個案例一樣。

“萬金油”公式,INDEX+SMALL+IF+ROW函數組合的三個應用案例解析

3.提取唯一值

在A列重複數據中提取唯一值,D2單元格輸入公式:=IFERROR(INDEX($A$2:$A$16,SMALL(IF(MATCH($A$2:$A$16,$A$2:$A$16,0)=ROW($1:$15),ROW($1:$15),20),ROW(A1))),"") 按Ctrl+Shift+Enter 結束公式。

公式說明:IF(MATCH($A$2:$A$16,$A$2:$A$16,0)=ROW($1:$15),ROW($1:$15),20) 用MATCH函數查找A2:A16中數據在A2:A16區域中出現的位置,MATCH函數查找只會返回區域中首個匹配的數據,所以重複出現的數據都只有一個位置。再用IF函數判斷MATCH函數查找出的位置是否等於所在的行號,如果等於則返回所在的行號,如果不等於則返回一個比數據行號要大的一個數字(比如A列數據有16行,只要比16大的數字且所在的行號是空單元格即可),按F9可看到公式運算後得到的結果是{1;2;3;4;5;20;20;8;20;20;11;20;20;20;20},然後用INDEX+SMALL函數提取出數字。

“萬金油”公式,INDEX+SMALL+IF+ROW函數組合的三個應用案例解析

我是小螃蟹,如果您喜歡這篇教程,請幫忙點贊和轉發哦,感謝您的支持!


分享到:


相關文章: