Excel函數公式一對多查詢的12種公式

完成效果:

在熟悉常用函數語法之後,如果要解決實際工作問題,往往需要幾個函數通過嵌套組合才能解決問題,這就是所謂的思路。收集的思路越多,越容易想到解決辦法。下面針對一對多查詢這個問題,介紹12種公式中運用的一些常用思路。

以下公式均需要按【CTRL SHIFT ENTER】三鍵結束。

公式1

E2=IFERROR(INDEX(B:B,SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1))),"")

思路分析:

通過條件函數IF判斷,只要符合要求的記錄,全部返回所在行號,否則返回False。SMALL函數的作用是從小到大逐個返回行號,最後通過INDEX函數返回符合要求的記錄。IFERROR函數的作用是當所有記錄顯示完出錯時,公式返回空。以下所有公式的這個信息函數作用是一樣的,就不再贅述了。

公式2

F2=IFERROR(VLOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),IF({1,0},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11),2,),"")

思路分析:

利用IF函數重新構造兩列數組,一列是符合條件的行號,一列是符合條件的記錄。再利用VLOOKUP函數從小到大行號查找返回符合要求的記錄。

公式3

G2=IFERROR(VLOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),CHOOSE({1,2},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11),2,),"")

思路分析:

思路與公式2思路大致一樣,唯一不同的是公式3是通過CHOOSE函數重新構造兩列數組。

公式4

H2=IFERROR(HLOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),TRANSPOSE(IF({1,0},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11)),2,),"")

思路分析:

思路和公式2類似,不過這裡是通過HLOOKUP函數查找,查找區域需要TRANSPOSE函數轉置一下才能返回正確結果。

公式5

I2=IFERROR(HLOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),TRANSPOSE(CHOOSE({1,2},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11)),2,),"")

思路分析:

思路和公式4大致一樣,唯一不同的是公式5是通過CHOOSE函數重新構造兩列數組。

公式6

J2=IFERROR(LOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11),"")

思路分析:

這裡利用了LOOKUP函數以下語法:

LOOKUP(lookup_value, lookup_vector, [result_vector])

在LOOKUP函數把符合條件的行號從小到大返回結果。

公式7

K2=IFERROR(LOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),IF({1,0},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11)),"")

思路分析:、

這裡利用了LOOKUP函數以下語法:

LOOKUP(lookup_value, array)

思路是一樣的,不過語法結構不同,注意與公式6的區別。

公式8

L2=IFERROR(LOOKUP(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),CHOOSE({1,2},IF(A$1:A$11=D$2,ROW(A$1:A$11)),B$1:B$11)),"")

思路分析:

思路與公式7一樣,不同的是公式8通過CHOOSE函數重新構造兩列數組。

公式9

M2 =IFERROR(OFFSET(B$1,SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1))-1,),"")

思路分析:

利用OFFSET函數,以B1單元格為起點,向下偏移相應符合條件行數的記錄。

公式10

N2 =IFERROR(INDIRECT("B"&SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1))),"")

思路分析:

利用INDIRECT函數A1樣式單元格引用。

公式11

O2 =IFERROR(INDIRECT("r"&SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1))&"c2",),"")

思路分析:

利用INDIRECT函數R1C1樣式單元格引用。

公式12

P2 =IFERROR(INDIRECT(ADDRESS(SMALL(IF(A$1:A$11=D$2,ROW(A$1:A$11)),ROW(A1)),2)),"")

思路分析:

與公式10類似,這裡是通過ADDRESS函數返回單元格引用地址。


推薦閱讀:

想學好函數公式,這些符號一定要懂!
考試成績分析函數
Excel函數:Find的數組用法幾例
使用VLOOKUP函數對EXCEL表格隔任意列求和
想要成為數據科學家?知道這11種機器學習演算法嗎?

TAG:公式 | 函數 | Excel | Excel函數 | 查詢 |