下拉框模糊匹配 巧用資料驗證製作模糊匹配的下拉列表

2021-10-14 16:17:21 字數 2991 閱讀 2844

對於excel的參照性輸入,我們一般會使用資料驗證裡面的序列功能。常規下我們用作系列的資料來源無非就是乙個資料列表。但這種處理有個很大的問題,那就是如果系列裡面的資料項太多,那麼在下拉列表裡面非常難以查詢,他就會變成如下圖這般,很多個列表專案全部混在一起,需要用滾動條不停的滾動才能找到。

以上這種常規的做法效率非常低,體驗並不好,那麼有沒有一種快速定位列表項的辦法呢?當然有,且看下面我們怎麼實現它。

在此,為了更加快速的輸入,我們採用助記碼方式,而非直接輸入漢字。畢竟字母輸入的效率肯定比漢字輸入要高。

=offset($b$1,match("*"&e2&"*",$c$2:$c$11,0),0,countif($c$2:$c$11,"*"&e2&"*"))
該公式就不做過多解釋了,這裡不是excel函式教育的地方。

第二點,出錯警告這裡必須去除選項,否則直接沒法完成查詢引用。

在此,我們在做完資料驗證的e2單元格輸入助記碼「tk」,然後單擊下拉框,於是就自動列出了包含助記碼為「tk」的專案名稱。當然了,這裡助記碼是不分大小寫的。助記碼可以輸入任意字元完成模糊匹配

執行到第三步時,實際上已經完全可以使用了。但鑑於使用者體驗的問題,如果還想更進一步,那麼助記碼這個都可以使用自定義函式來自動生成。當然了,如果不願意使用自定義函式,則仍然可以使用手工編制助記碼。但更推薦這種使用函式自動對全欄位取碼的方式,因為這個是全欄位拼音簡碼,匹配的範圍要比部分拼音碼要更寬一些。

函式取碼的效果如下:

function pinyin(byval expression) as string    dim lngi    as long    dim strword as string       expression = trim$(iif(isnull(expression), 0, expression))    for lngi = 1 to len(expression)        strword = mid$(expression, lngi, 1)        select case asc(strword)            case -20319 to -20284: pinyin = pinyin & "a"            case -20283 to -19776: pinyin = pinyin & "b"            case -19775 to -19219: pinyin = pinyin & "c"            case -19218 to -18711: pinyin = pinyin & "d"            case -18710 to -18527: pinyin = pinyin & "e"            case -18526 to -18240: pinyin = pinyin & "f"            case -18239 to -17923: pinyin = pinyin & "g"            case -17922 to -17418: pinyin = pinyin & "h"            case -17417 to -16475: pinyin = pinyin & "j"            case -16474 to -16213: pinyin = pinyin & "k"            case -16212 to -15641: pinyin = pinyin & "l"            case -15640 to -15166: pinyin = pinyin & "m"            case -15165 to -14923: pinyin = pinyin & "n"            case -14922 to -14915: pinyin = pinyin & "o"            case -14914 to -14631: pinyin = pinyin & "p"            case -14630 to -14150: pinyin = pinyin & "q"            case -14149 to -14091: pinyin = pinyin & "r"            case -14090 to -13319: pinyin = pinyin & "s"            case -13318 to -12839: pinyin = pinyin & "t"            case -12838 to -12557: pinyin = pinyin & "w"            case -12556 to -11848: pinyin = pinyin & "x"            case -11847 to -11056: pinyin = pinyin & "y"            case -11055 to -10247: pinyin = pinyin & "z"            case else:             pinyin = pinyin & strword        end select    nextend function
完成以上自定義函式之後就可以在工作簿內呼叫該函式了。

如此,在參照輸入時,只需輸入拼音簡碼,即可快速定位列表專案,比簡單的列表要高效得很多。

angular下拉框模糊查詢

前兩天研究了一下angularjs,不得不說angularjs的mvc思想還是很強大的。對應偏重於資料處理的專案還是非常有優勢的。寫了個搜尋下拉框的demo,注釋在裡邊都寫了,就不再這羅嗦了。1文字框做輸入,並監控器change事件,在change事件中獲取輸入值,獲取的輸入值與選擇框中的各個下拉項...

可輸入 自動匹配的下拉框

thanks for jk style.css ac menu ac menuitem ac menuitem selected main.js function combobox sobj,al v,al t loadcombobox sobj,al v,al t function loadcom...

可輸入 自動匹配的下拉框

style.css ac menu ac menuitem ac menuitem selected main.js function combobox sobj,al v,al t loadcombobox sobj,al v,al t function loadcombobox obj,al v...