我們知道,Excel的數(shù)據(jù)篩選功能很強(qiáng)大,你可以很方便的進(jìn)行各種篩選。但是這個(gè)篩選有個(gè)問(wèn)題,那就是最多只能使用兩個(gè)條件:
當(dāng)然,如果使用高級(jí)篩選是可以篩選多個(gè)條件的記錄的,但是高級(jí)篩選又比較復(fù)雜。
今天我們介紹的這個(gè)方法,使用了SUMPRODUCT函數(shù)和SEARCH函數(shù)添加了一個(gè)輔助列,使得我們可以篩選滿足多個(gè)條件的記錄。
假設(shè)我們的數(shù)據(jù)和需要篩選的條件如下:
我們可以添加一個(gè)輔助列:
其中,我們使用了公式:
=SUMPRODUCT(N(NOT(ISERROR(SEARCH($G$3:$G$6,C3)))))
將這個(gè)公式填充到整列:
可以看到,所有至少滿足一個(gè)右邊條件的記錄,該輔助列的結(jié)果是1,因此,我們只要篩選所有輔助列大于0的記錄就可以了。
這里我們要篩選大于0,而不是等于1,是因?yàn)檫@個(gè)公式實(shí)際計(jì)算的滿足的條件個(gè)數(shù),例如,如果右邊的條件修改一下:
輔助列的結(jié)果有很多變成了2,因?yàn)樗麄儩M足兩個(gè)條件。比如,第三行“健怡可樂(lè)CAN”,既包含了“CAN”,又包含了“可樂(lè)”。
這里要注意,如果你刪了一個(gè)條件,會(huì)發(fā)現(xiàn)結(jié)果有問(wèn)題了:
這是因?yàn)槲覀兊墓綄?xiě)的是固定的區(qū)域(G3:G6),現(xiàn)在G6刪掉了內(nèi)容,該單元格變成了空,而所有的產(chǎn)品列都會(huì)包含“空”。
為了避免這種情況,最好的方式就是將右側(cè)條件轉(zhuǎn)換為超級(jí)表(Ctrl+T):
在刪除的時(shí)候用右鍵菜單刪除表行。這樣就變成了可以根據(jù)條件區(qū)域自行擴(kuò)大的篩選了。
在條件區(qū)域還可以使用通配符:
我們先來(lái)看這個(gè)嵌套的公式中最里層的部分:=SEARCH(表1[條件],C3)
這里的參數(shù)“表1[條件]是指右邊的條件區(qū)域,C3是產(chǎn)品名稱,
這個(gè)公式的結(jié)果是個(gè)錯(cuò)誤值。在公式欄中點(diǎn)擊鼠標(biāo)進(jìn)入編輯狀態(tài),按F9:
可以看到,這個(gè)SEARCH公式的結(jié)果是一個(gè)數(shù)組。因?yàn)橛?個(gè)條件,所以數(shù)組有5個(gè)元素,每個(gè)元素代表一個(gè)條件的結(jié)果,除了第三個(gè)是一個(gè)數(shù)值外,其他的結(jié)果都是錯(cuò)誤值。
再來(lái)看外面一層:ISERROR(SEARCH(表1[條件],C3)),同樣在公式欄中按F9看看展開(kāi)的計(jì)算結(jié)果:
可以看到,原來(lái)錯(cuò)誤值的結(jié)果對(duì)應(yīng)變成TRUE,而原來(lái)數(shù)值的地方變成了FALSE。
現(xiàn)在我們給這個(gè)公式嵌套了一個(gè)NOT函數(shù):NOT(ISERROR(SEARCH(表1[條件],C3))),結(jié)果變成了:
NOT的作用就是將TRUE變成FALSE,F(xiàn)ALSE變成TRUE。
倒數(shù)第二層是嵌套一個(gè)N函數(shù),這個(gè)函數(shù)的作用是將一個(gè)內(nèi)容變成數(shù)值,如果這個(gè)內(nèi)容是TRUE,結(jié)果返回1,如果這個(gè)內(nèi)容是FALSE,結(jié)果就返回0。于是,公式:N(NOT(ISERROR(SEARCH(表1[條件],C3))))的結(jié)果就是:
最后,SUMPRODUCT的作用就是將這個(gè)數(shù)組的所有結(jié)果加起來(lái)。
于是,這個(gè)公式就可以告訴我們究竟產(chǎn)品名稱中包含了一個(gè)右表中的條件。
今天的分享就到這里了。相信你在工作中可以用到這個(gè)技巧。
聯(lián)系客服