巧用數(shù)據(jù)驗證制作模糊匹配的下拉列表

?對于Excel的參照性輸入,我們一般會使用數(shù)據(jù)驗證里面的序列功能。常規(guī)下我們用作系列的數(shù)據(jù)源無非就是一個數(shù)據(jù)列表。但這種處理有個很大的問題,那就是如果系列里面的數(shù)據(jù)項太多,那么在下拉列表里面非常難以查找,他就會變成如下圖這般,很多個列表項目全部混在一起,需要用滾動條不停的滾動才能找到。

image

?以上這種常規(guī)的做法效率非常低,體驗并不好,那么有沒有一種快速定位列表項的辦法呢?當(dāng)然有,且看下面我們怎么實(shí)現(xiàn)它。

1、建立數(shù)據(jù)列表項目的數(shù)據(jù)源。

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

image

2、設(shè)置數(shù)據(jù)驗證

?具體辦法是在需要做下拉列表的地方做數(shù)據(jù)驗證,這里我就不廢話了。畢竟大家都知道如何操作。這里最關(guān)鍵的地方有兩點(diǎn):
?第一點(diǎn),就是數(shù)據(jù)來源的設(shè)定。結(jié)合上表,我們在此輸入的數(shù)據(jù)來源的公式為:

=OFFSET($B$1,MATCH("*"&E2&"*",$C$2:$C$11,0),0,COUNTIF($C$2:$C$11,"*"&E2&"*"))

?該公式就不做過多解釋了,這里不是Excel函數(shù)教育的地方。

image

?第二點(diǎn),出錯警告這里必須去除選項,否則直接沒法完成查找引用。

image

3、實(shí)際使用場景

?在此,我們在做完數(shù)據(jù)驗證的E2單元格輸入助記碼“tk”,然后單擊下拉框,于是就自動列出了包含助記碼為“tk”的項目名稱。當(dāng)然了,這里助記碼是不分大小寫的。助記碼可以輸入任意字符完成模糊匹配

image
image

4、深化助記碼

?執(zhí)行到第三步時,實(shí)際上已經(jīng)完全可以使用了。但鑒于用戶體驗的問題,如果還想更進(jìn)一步,那么助記碼這個都可以使用自定義函數(shù)來自動生成。當(dāng)然了,如果不愿意使用自定義函數(shù),則仍然可以使用手工編制助記碼。但更推薦這種使用函數(shù)自動對全字段取碼的方式,因為這個是全字段拼音簡碼,匹配的范圍要比部分拼音碼要更寬一些。

?函數(shù)取碼的效果如下:

image

?當(dāng)然了要實(shí)現(xiàn)以上自動生成漢字拼音首字母,我們得先用VBA做一個自定義函數(shù)“PinYin”。如下圖,在VBA編輯器里面插入一個模塊,然后輸入如下代碼:

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
    Next
End Function

?完成以上自定義函數(shù)之后就可以在工作簿內(nèi)調(diào)用該函數(shù)了。

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


創(chuàng)作不易,轉(zhuǎn)載請注明出處!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容