篩選出包含關鍵字的結果,已經不容易,若要篩選出不包含關鍵字的結果,難度更甚。而這些竟然都能通過一條公式實現?
案例:
下圖 1 是每個人購買的菜品流水表,其中人和菜都重復出現過。請分別按以下要求查找出不同的結果:
查找出購買的菜品包含“魚”關鍵字的所有人 查找出購買的菜品不包含“菜”字的所有人,且去重
效果如下圖 2 所示。
解決方案:
匹配出菜品包含“魚”的所有人。 1. 在 E2 單元格中輸入以下公式 --> 回車: =FILTER(A2:A21,ISNUMBER(FIND(D2,B2:B21))) 公式釋義: FIND(D2,B2:B21):在區(qū)域 B2:B21 中查找 D2 單元格的內容,如果找到,返回“魚”字在 B 列單元格的文本中的位置,結果為一個數值;找不到則返回錯誤值; ISNUMBER(...):判斷上述公式結果是否為數值,結果為 true 或 false 組成的邏輯值; FILTER(...): FILTER 函數的作用是基于布爾值 (True/False) 數組篩選數組; 語法為 FILTER(要篩選的數組或區(qū)域,要基于此篩選的布爾值,[篩選結果為空時返回的值]) 本案例的公式表示基于 isnumber 返回的布爾值在 A 列中篩選出符合條件的姓名
2. 在 B 列中手工篩選出所有包含“魚”的結果核對一下,公式結果正確。
匹配出菜品不包含“菜”的所有人。 3. 在 H2 單元格中輸入以下公式: =FILTER(A2:A21,ISERROR(FIND(G2,B2:B21))) 公式釋義:
4. 在 B 列手工篩選出結果進行核對,公式依然正確。
5. 到了現在,如果需要在 H 列的結果中僅保留姓名唯一值,只需要在整個公式外面套個 unique 函數就可以了。
=UNIQUE(FILTER(A2:A21,ISERROR(FIND(G2,B2:B21))))
|