很多人可能知道,使用Excel【數據有效性】當中的【序列】功能,可以在單元格內創建一個下拉菜單,在進行輸入時可以在下拉菜單中選擇項目。這樣的下拉菜單可以提高用戶輸入時的準確性和便利性。
本文所要介紹的自適應的下拉菜單,就是可以根據用戶在單元格里輸入的字符,在下拉菜單的顯示項目中自動篩選出以這些字符開頭的項目,縮小下拉菜單中的項目選擇范圍,使目標更精準,方便用戶選取。這是一種對數據有效性序列的智能化改造手段。
完成后的效果如下:
具體設置方法如下:
步驟1:將需要作為選擇項目的原始數據進行排序。
排序以后,相同字符開頭的字符串將分布在連續的單元格中,便于創建數據有效性的引用序列。
步驟2:選中需要設置下拉菜單的單元格,打開【數據有效性】對話框,選擇【序列】,并且在【來源】中使用以下公式:
=OFFSET($A$1,MATCH(C2&"*",$A:$A,0)-1,,COUNTIF($A:$A,C2&"*"))
其中,其中A列是之前排過序的項目數據源所在列,C2 則是當前選中的單元格。
上述公式的具體含義如下:
MATCH(C2&"*",$A:$A,0)
這部分可以在A列中查找以C2當中字符打頭的項目,返回其中找到的第一個項目的行號
COUNTIF($A:$A,C2&"*")
這部分公式在A列中統計以C2當中字符打頭的項目的個數
以上面圖中的數據情況為例,
MATCH(C2&"*",$A:$A,0) = 4
COUNTIF($A:$A,C2&"*") = 12
整個公式等效于:
=OFFSET($A$1,4-1,,12)
這個OFFSET函數公式的作用是形成一個引用區域,即以A1單元格向下偏移3行(A4單元格),以此單元格起始的12行單元格區域為引用范圍。
這個公式的整體作用就是在A列數據源中提取出了以C2單元格當中字符開始的所有項目。以這個提取出來的區域作為數據有效性序列的引用源,就可以形成一個可以動態變化、自動適應單元格輸入內容的下拉菜單。
步驟3:選中【數據有效性】的【出錯警告】選項卡,取消勾選【輸入無效數據時顯示出錯警告】選項。
這個操作步驟的目的是為了在單元格當中輸入不完整的項目字符串時,系統不會因為數據有效性的錯誤警告而阻止用戶的輸入。
最終完成效果如下: