在日常工作中,我們往往需要根據多個條件查詢出多個結果,如公司為了支援福建新廠建設,需要將員工表中籍貫為福建、年齡不大於28歲、一車間的員工找出來派往新廠支援。對於類似的多對多查詢,藉助Excel 2019就可以快速完成。
文|俞木發
方法1:直接使用篩選找出
適合:新手使用,需要篩選的文件不多。
先選中C1:E1數據區域,點擊“數據→篩選”為其添加篩選功能,接著點擊C1單元格的篩選,選擇“數字篩選→小於或等於→28”,點擊“確定”完成年齡的篩選(圖1)。
操作同上,再選中D1單元格的篩選,篩選籍貫為“福建”;繼續選中E1單元格,篩選車間為“一車間”。這樣就可以完成多條件的篩選操作。
方法2:函數自動篩選
適合:經常需要進行篩選操作,可以保存為模板文件使用。
1.使用INDEX函數提取
適合:所有版本Excel
在F2:H2區域輸入篩選條件,定位到I2單元格並輸入公式“=IF(AND(C2<=$F$2,D2=$G$2,E2=$H$2),ROW()-1,"")”,下拉完成列號提取(圖2)。
公式解釋:
先使用AND函數設置篩選條件,如果符合篩選條件就顯示為“ROW()-1”,即“當前行號-1”,如B2單元格的員工符合條件顯示為數字“2-1=1”,否則顯示為空。
接著定位到J2單元格並輸入公式“=IFERROR(INDEX($B$2:$B$12,SMALL($I$2:$I$12,ROW(A1))),"")”,下拉公式完成員工名單的提取(圖3)。
公式解釋:
先使用SMALL函數對員工序號從小到大排序,然後將其作為INDEX函數提取的列號,提取的數據區域是$B$2:$B$12。最後在外層嵌套IFERROR函數,如果沒有提取到數據則顯示為空。
2.使用FILTER函數提取
適合:Office 365、Office 2021和新版WPS用戶。
這些版本的用戶可以使用新增的FILTER函數進行快速提取,下面以WPS操作為例。
在WPS表格中打開文件,同上先在F2:H2區域中輸入篩選條件,接著選中I2:I33區域(可以根據實際需要選擇合適的區域),然後在地址欄中輸入公式“=FILTER(B:B,(C:C<=F2)*(D:D=G2)*(E:E=H2))”,按下“Ctrl+Shift+Enter”組合鍵完成數組公式的輸入(圖4)。
公式解釋:
B:B是員工名單區域,後續參數則是多條件數組,其中“*”表示同時滿足,這樣FILTER函數就可以篩選出符合要求的名單了。
由於WPS的FILTER函數無法實現數組自動溢出,在沒有提取數據區域會顯示為“#N/A”,為了數據美觀可以使用IFS函數進行屏蔽。定位到K2單元格並輸入公式“=IFERROR(I2,"")”,下拉填充完成錯誤值的屏蔽。這裡使用IFERROR函數對I列的顯示進行設置,如果I2單元格為錯誤值就顯示為空。最後將I列隱藏,這樣添加員工數據後,在J列就可以同步更新顯示了(圖5)。
方法3:VBA一鍵篩選選
適合:有許多同樣數據結構文件進行篩選,可以保存為加載宏的“.xlsm”模板文件使用。
定位到F2單元格並輸入公式“=AND(C2<=28,D2="福建",E2="1車間")”,表示設置的篩選條件。接著按下“Alt+F11”快捷鍵打開VB編輯窗口,點擊“插入→模塊”,然後在代碼框中輸入如圖所示的代碼(圖6)。
這樣需要篩選數據的時候,只要點擊“開發工具→宏→VBA篩選”,再點擊“執行”即可完成篩選了。還可以點擊“選項”,為宏設置運行快捷鍵如“Ctrl+r”(圖7)。
後續可以將文件保存為“VBA篩選.xlsm”,這樣以後在其他工作簿中需要篩選類似數據時,只要在F1:F2區域中設置好篩選條件(可以自行設置其他篩選條件,如“=AND(C2<=28,D2="河北",E2="3車間")”),然後再打開“VBA篩選.xlsm”,在宏列表中選擇“VBA篩選.xlsm!VBA篩選”,或者按下“Ctrl+r”即可一鍵完成篩選了(圖8)。CF
原文刊登於2022 年 12月1 日出版《電腦愛好者》第 23 期
END
更多精彩,敬請期待……