圖1中包含6個(gè)(6列)字段的內(nèi)容,如果要實(shí)現(xiàn)在一個(gè)單元格中輸入6列中的任意字段就可以完成對所有列的篩選,我們可以通過TEXTJOIN函數(shù)將所有列的內(nèi)容連接在一起,并對該列添加篩選按鈕,然后再將篩選要求和指定單元格(如圖1所示的C1單元格)中輸入的內(nèi)容關(guān)聯(lián)起來,即可實(shí)現(xiàn)圖1所示的效果。下面筆者就以Excel 2019為例介紹具體的操作。
在原數(shù)據(jù)的最左側(cè)插入一個(gè)新列,假設(shè)為A列,定位到A4單元格并輸入公式“=TEXTJOIN("", TRUE,TEXT( B4 ,"yyyy-mmdd"), C4:G 4)”,下拉填充到A16單元格。該操作表示先使用TEX T函數(shù)將B4單元格的格式設(shè)置為“年月日”,然后再與C4:G4區(qū)域中的內(nèi)容相連接,下拉后即可獲得如圖所示的內(nèi)容(圖2)。
如果經(jīng)常通過員工姓名進(jìn)行篩選,就將D4:D16區(qū)域中的內(nèi)容復(fù)制到I4:I16區(qū)域,然后選中I4:I16區(qū)域并依次點(diǎn)擊“數(shù)據(jù)→刪除重復(fù)值”,將去除重復(fù)姓名后的數(shù)據(jù)作為數(shù)據(jù)驗(yàn)證的序列使用。接著定位到C1單元格,依次點(diǎn)擊“數(shù)據(jù)→數(shù)據(jù)驗(yàn)證→數(shù)據(jù)驗(yàn)證→設(shè)置”,驗(yàn)證條件選擇“序列”、來源選擇“=$I$4:$I$9”(圖3)。
繼續(xù)切換到“出錯(cuò)警告”選項(xiàng)卡,去除“輸入無效數(shù)據(jù)時(shí)顯示出錯(cuò)警告(S)”的勾選,這樣我們在C1單元格的下拉列表中選擇員工姓名,或者直接輸入其他字段的內(nèi)容,如“西北區(qū)域”、“憑證編號”等,即可實(shí)現(xiàn)更多的可查詢關(guān)鍵字的輸入(圖4)。
在指定的單元格中輸入關(guān)鍵字后自動(dòng)完成相應(yīng)的篩選,我們使用的是“篩選”功能中的“文本篩選”。比如在A3單元格中添加篩選按鈕后,依次點(diǎn)擊“篩選→文本篩選→包含”,這里選擇“包含”是為了能在C1單元格中模糊搜索輸入的關(guān)鍵字(圖5)。
接下來我們將C1單元格中輸入的關(guān)鍵字和圖5 所示的文本篩選參數(shù)關(guān)聯(lián)起來即可,該關(guān)聯(lián)操作可以借助VBA代碼來實(shí)現(xiàn)。到“https://share.weiyun.com/9zdxPKhb”下載所需的代碼文件,返回Excel后按下“Al t+F11”快捷鍵,在打開的VBA窗口中依次點(diǎn)擊“插入→模塊”,將上述下載到的代碼粘貼到編輯框中(圖6)。
代碼解釋:
這里先使用IF函數(shù)對C1單元格中輸入的內(nèi)容進(jìn)行判斷,然后將其和“"$A$3:$A$16”(絕對引用)數(shù)據(jù)區(qū)域的文本篩選參數(shù)相關(guān)聯(lián),并通過“Change”聲明來實(shí)現(xiàn)在C1單元格中輸入不同的數(shù)據(jù)后篩選條件的動(dòng)態(tài)變化。這樣指定的區(qū)域就會(huì)始終以C1單元格中輸入的動(dòng)態(tài)數(shù)據(jù)作為“包含文本”進(jìn)行篩選。
以后當(dāng)我們需要在工作簿中篩選指定的數(shù)據(jù)時(shí),只需在A3單元格中添加篩選按鈕,接著將A、I列隱藏,然后在C1單元格中輸入關(guān)鍵字,如“王五”,即可實(shí)現(xiàn)按照員工姓名進(jìn)行篩選了。這時(shí)如果按照圖5所示的方法打開“文本篩選”參數(shù),可以看到這里引用的就是C1單元格中輸入的內(nèi)容(圖7)。
由于我們在圖5中設(shè)定的文本篩選參數(shù)是“包含”,所以還可以在這里使用模糊搜索功能。比如忘記了某張姓員工的具體名字,那么只要在C1單元格中輸入“張”,即可將所有張姓員工的數(shù)據(jù)篩選出來(圖8)。