制作模糊查詢效果Excel下拉菜單
在Excel單元格中輸入特定范圍的內(nèi)容時(shí),一般會(huì)利用數(shù)據(jù)有效性生成下拉列表的方式進(jìn)行,但如果源列表的內(nèi)容太多(比方說(shuō)有數(shù)百個(gè)),這時(shí)再通過(guò)下拉列表查找需要的值就很不方便了。
如果采用智能感知的模糊查詢下拉列表菜單輸入,隨著回車(chē)之前輸入字符的增加,列表中可供選擇的項(xiàng)目在逐漸減少,這樣就更便于選擇。那么這樣的效果如何實(shí)現(xiàn)呢?其實(shí),利用輔助列、CELL函數(shù),再結(jié)合數(shù)據(jù)有效性,這樣的模糊查詢效果下拉菜單就很容易實(shí)現(xiàn)(圖1)。
首先,在名單所在工作表中插入一個(gè)輔助列,在輔助列的第一個(gè)單元格中輸入“=INDEX(B:B,SMALL(IF(ISNUMBER(FIND(CELL("contents"),B$2:B$13)),ROW($2:$13),4^8),ROW(A1)))&""”,然后,同時(shí)按下Ctrl、Shift、Enter,使得輸入的內(nèi)容變成數(shù)組公式,拖動(dòng)鼠標(biāo)向下填充(圖2)。
小提示:
公式中CELL("contents")省略了第二參數(shù),直接獲得最后更改單元格的值;FIND(CELL("contents"),B$2:B$13)是查詢CELL("contents")的結(jié)果是否在B2:B13單元格區(qū)域存在,如果存在則返回一個(gè)位置數(shù)值,如果不存在則返回錯(cuò)誤值;IF(ISNUMBER(FIND(CELL("contents"),B$2:B$13)),ROW($2:$13),4^8)中,ISNUMBER函數(shù)判斷FIND函數(shù)的結(jié)果是否為數(shù)值,如果為數(shù)值,則返回相關(guān)值所對(duì)應(yīng)的行號(hào),如果不是數(shù)值,則返回值4^8;SMALL函數(shù)對(duì)IF函數(shù)的結(jié)果進(jìn)行從小到大取數(shù),隨著公式的向下填充,依次提取第1、2、3、4、5……N個(gè)最小值,依次得到包含最后更改單元格值的單元格的行號(hào);INDEX函數(shù)根據(jù)SMALL函數(shù)返回的索引值,得出結(jié)果。
接下來(lái),選取需要設(shè)置下拉菜單的單元格區(qū)域,比如E2:E10;選擇“數(shù)據(jù)”選項(xiàng)卡,點(diǎn)擊“數(shù)據(jù)驗(yàn)證→數(shù)據(jù)驗(yàn)證”,在彈出窗口“設(shè)置”選項(xiàng)卡中,驗(yàn)證條件下“允許”處選擇“序列”,“來(lái)源”處選擇C2:C13(即輔助列下的單元格區(qū)域);再選擇“出錯(cuò)警告”選項(xiàng)卡,將“輸入無(wú)效數(shù)據(jù)時(shí)顯示出錯(cuò)警告”的勾選去掉(圖3)。
這些設(shè)置完成后,當(dāng)在E2:E10各個(gè)單元格中輸入姓名部分文字后,下拉菜單就會(huì)顯示出包含該文字的所有選項(xiàng)。如此輸入是不是非常方便呢?