Excel 實現二級下拉列表效果


首先感謝阿輝提供的應用場景和原始素材,又漲知識了。

Excel 填表時,遇到地址(省、市、區、街道……)或多級類目選擇(父類、子類、子類的子類……)時,通常希望 Excel 能根據選中的類別,自動列出該類下的所有子類項;選定第二級子類後,再自動提示二級子類的所有子類項,以此類推。網上大致查了一下,大致有兩種思路,一種是用 OFFSET+MATCH 組合,另一種是用 INDIRECT。前一種比較複雜,這裏只介紹簡單的 INDIRECT 及類別爲全英文時的處理方法。

1 實現原理

INDIRECT 函數:

語法:INDIRECT(ref_text, [a1])

作用:將單元格的值 ref_text 作爲單元格地址,間接地、迂迴(函數名的由來)得到新地址的值。

2 中文版處理

  1. 創建類別數據源:羅列出所有類別及子類別(示例爲橫向,也可以縱向);

    創建類別數據源

  2. 批量創建名稱F5 定位整個類別區域後,組合鍵 Ctrl + Shift + F3 批量命名各個子類區域(縱向則勾選 首行);

    批量命名區域

  3. 建立第一級下拉:【數據】–【數據驗證】–設置驗證條件爲“序列”–輸入第一級類別的區域名稱(如 cat_lv1):

    設置一級下拉

  4. **建立第二級下拉。**利用 INDIRECT 函數,將第一級下拉單元格的值作爲參數傳入,得到一級名稱對應的子項單元格區域:

    在這裏插入圖片描述

  5. 驗證效果

    中文版效果

3 英文版處理

由於中文可以直接作爲區域名稱使用,配合 INDIRECT 將十分方便。但在英文條件下,一級類別的文本很可能是幾個用空格間隔的單詞,直接作爲區域引用是無效的。需要處理成 Excel 可以識別的名稱才行。Excel 在新建名稱時,會默認將空格替換成下劃線,具體來說,就是把 first category of sth 處理成 first_category_of_sth 的形式,後者就是有效名稱了。利用 Excel 內置函數 SUBSTITUTE 可以實現等效替換——

  1. 創建數據源、批量創建名稱、建立第一級下拉:(同上)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Y1PhlK22-1582727370118)(1-6.png)]

  2. 建立二級下拉:(INDIRECT + SUBSTITUTE

    在這裏插入圖片描述

  3. 驗證效果:

    在這裏插入圖片描述

4 小結與拓展

  1. Excel 區域名稱不能包含 空格
  2. 動態下拉列表的關鍵,在於得到本級列表的區域名稱。示例藉助了 SUBSTITUTE 函數,實際情況可靈活調整。

5 示例文件

鏈接:https://pan.baidu.com/s/1feE5Xfsu23odudFICY644Q
提取碼:ole8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章