小夥伴們好啊,今天和大家說說一對多查詢的問題。
就是當一個查詢值對應多條記錄時,如何才能把這些記錄全部提取出來呢?
如下圖所示,是多個部門的員工資訊。
現在,咱們要按部門提取出對應的姓名。
方法1:VLOOKUP+輔助列
單擊A列列標,右鍵→插入,插入一個空白列。
在A2單元格輸入公式,向下復制。
=B2&COUNTIF($B$1:B2,B2)
在H2單元格中輸入公式,向右向下復制:
=IFERROR(VLOOKUP( $G2&COLUMN(A1) , $A:$E ,3,0),"")
方法2: FILTER 函式
如果你使用的是最新的WPS表格或者是Office 2021,只要在H2單元格輸入以下公式,向下拖動即可:
=TRANSPOSE(FILTER(C$2:C$14,B$2:B$14=G2))
先使用 FILTER 函式,根據指定的條件 B $2:B$14=G2 ,在 C$2:C$1 4 單元格區域中提取出姓名。
然後使用
TRANSPOSE
函式把垂直的記憶體陣列轉換為水平方向。
方法3:陣列公式
除此之外,還可以使用陣列公式:
=INDEX($C:$C,SMALL(($B$2:$B$14<>$G2)/1%%+ROW($2:$14),COLUMN(A1)))&""
這個公式的大致意思是,如果 $B$2:$B$14不等於$G2,就將行號放大10000倍,否則返回符合條件的行號。
再使用SAMLL函式從小到大依次提取出行號。
最後由INDEX函式根據提取出的行號,返回C列中對應位置的內容。
這個公式的缺點是編輯復雜,執行效率低,優點是可以在任意版本中使用。
方法4:
李秘書,你來一下……
好了,今天咱們的內容就是這些吧,祝各位一天好心情~~
練手檔:
https://pan.baidu.com/s/18Z5uuDAwNg2e0t0W1cCwog
圖文制作:祝洪忠