首先感謝阿輝提供的應用場景和原始素材,又漲知識了。
用 Excel
填表時,遇到地址(省、市、區、街道……)或多級類目選擇(父類、子類、子類的子類……)時,通常希望 Excel
能根據選中的類別,自動列出該類下的所有子類項;選定第二級子類後,再自動提示二級子類的所有子類項,以此類推。網上大致查了一下,大致有兩種思路,一種是用 OFFSET+MATCH 組合,另一種是用 INDIRECT。前一種比較複雜,這裏只介紹簡單的 INDIRECT 及類別爲全英文時的處理方法。
1 實現原理
INDIRECT
函數:
語法:INDIRECT(ref_text, [a1])
作用:將單元格的值 ref_text
作爲單元格地址,間接地、迂迴(函數名的由來)得到新地址的值。
2 中文版處理
-
創建類別數據源:羅列出所有類別及子類別(示例爲橫向,也可以縱向);
-
批量創建名稱:F5 定位整個類別區域後,組合鍵 Ctrl + Shift + F3 批量命名各個子類區域(縱向則勾選 首行);
-
建立第一級下拉:【
數據
】–【數據驗證
】–設置驗證條件爲“序列
”–輸入第一級類別的區域名稱(如cat_lv1
): -
**建立第二級下拉。**利用
INDIRECT
函數,將第一級下拉單元格的值作爲參數傳入,得到一級名稱對應的子項單元格區域: -
驗證效果:
3 英文版處理
由於中文可以直接作爲區域名稱使用,配合 INDIRECT
將十分方便。但在英文條件下,一級類別的文本很可能是幾個用空格間隔的單詞,直接作爲區域引用是無效的。需要處理成 Excel
可以識別的名稱才行。Excel
在新建名稱時,會默認將空格替換成下劃線,具體來說,就是把 first category of sth
處理成 first_category_of_sth
的形式,後者就是有效名稱了。利用 Excel
內置函數 SUBSTITUTE
可以實現等效替換——
-
創建數據源、批量創建名稱、建立第一級下拉:(同上)
-
建立二級下拉:(
INDIRECT
+SUBSTITUTE
) -
驗證效果:
4 小結與拓展
Excel
區域名稱不能包含 空格;- 動態下拉列表的關鍵,在於得到本級列表的區域名稱。示例藉助了
SUBSTITUTE
函數,實際情況可靈活調整。
5 示例文件
鏈接:https://pan.baidu.com/s/1feE5Xfsu23odudFICY644Q
提取碼:ole8