Excel動態下拉式選單

這篇算是網路上找到最完整值得推薦也不太會消失的一篇了
一點通 – Excel 下拉式選單(三之三) (MVP 撰寫)
https://support.microsoft.com/zh-tw/kb/2554041

這篇其實非常方便,不論幾層的下拉式選單都可以輕鬆做出來。但存在一個有點麻煩的小問題:如果未來要增加分類必須要重新增加名稱。這硬要說也不算問題啦,因為通常會被叫去做這件事的倒楣鬼就是看到這篇的人。

但我個人因為有點懶,所以考慮用另一個做法。

=INDIRECT(“多層!R2C”&MATCH(A2,多層!$1:$1,0)&”:R”&COUNTA(多層!A:A)&”C”&MATCH(A2,多層!$1:$1,0),0)

簡單講:第一列固定是第一層清單,每欄分別為第二層清單。優點是無痛新增第一層清單;缺點是每多一層清單都要放在不同工作表。

https://lh3.googleusercontent.com/-5ZEEIdgsZNQ/Vons3m3AbbI/AAAAAAAAUYs/UJii-68xEdQ/s1024-Ic42/Office%252520Excel%252520%2525E5%25258B%252595%2525E6%252585%25258B%2525E4%2525B8%25258B%2525E6%25258B%252589%2525E5%2525BC%25258F%2525E9%252581%2525B8%2525E5%252596%2525AE.png

翻譯一下公式的部分:

INDIRECT是用來把你指定的位置資料吐出來的函數。
MATCH是用來在一堆資料中找到你指定的資料是排第幾個。
COUNTA是用來算有幾個文字資料。

所以你第二層的下拉式選單要吐給資料驗證的欄位是「某欄的第一列等於你前面那格的所有資料」。嚴格來說應該是從第二列開始的資料。所以指定的位置就會是從R2開始。
因為MATCH只會吐數字出來,所以你在INDIRECT中就必須使用R1C1的格式。就會長成這樣:INDIRECT(布拉布拉,0)
然後你要用COUNTA去算到底有幾個欄位,雖然說設定個99或是999之類的通常都會夠用,但為了避免突發狀況,還是用COUNTA比較穩。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *