2013-01-04

如何用Excel製作聯動式清單



本文由菜鳥所寫,僅供菜鳥讀者及筆者參考之用。高手請無視。

我們平時上網,經常會見到一些聯動式清單(如圖1),就是一連幾個的下拉式清單(Droplist),當第一個的內容改變時,第二個的選項也會跟着變。各位是否知道,原來Excel中也可以方便地製作這種清單。

圖1

(以下說明均以Excel 2007簡體中文版為例,不過在Excel 2003及繁體版中同樣適用,只是名字可能有些不一樣。)

首先,Excel本身就自帶有下拉式清單這個物件,使用起來也相當方便:
1.      在“開發工具”-->“控件”-->“插入”-->“表單控件”裡面選第一排第二個,即“組合框(窗體控件)”,如圖2所示;
圖2
2.      然後滑鼠拖曳改變下拉清單的位置及大小;
3.      接隨便找個地方(可以是另外的工作表,如Sheet2Sheet3……),輸入清單的全部選項,如圖3中的A1~A14那些數字;
4.      最後在那個下拉式清單上按右鍵-->“設置控件格式”(如圖3-->“控制”-->“數據源區域”(如圖4),選定A1~A14,即剛才輸入了選項(數字)的格子。
圖3

圖4

大功告成!下拉式清單就這樣做了。各位若還有不明白,請看視頻:


問題是,這種清單貌似不容易“聯動”(筆者未研究過,所以不會)。以下筆者教大家另一種方法,更加整齊、便捷,老少咸宜。
~~~~~~~~~~~~~~~~~~~~

既然是聯動式清單,當然至少有兩個下拉清單啦!而且每個的選項都不一樣。現在假設:
  • 我們需要一個二級的聯動清單
  • 第一個的選項包括“甲”、“乙”、“丙”、“丁”、“戊”五個
  • 當第一個選了“甲”的時候,第二個的選項就要是“甲子”、“甲丑”、“甲寅”、“甲卯”、“甲辰”五個,“乙”的時候則為“乙子”、“乙丑”、“乙寅”……依此類推
同前面一樣,我們先找個地方,把全部選項都一一列出,一共有五五二十五個,我把它們列成整齊的表格,如圖5所示。
圖5

接下來要用“定義名稱”的功能。先選定最頂欄“甲”、“乙”、“丙”、“丁”、“戊”五格,即A2~A6。然後到“公式”-->“定義的名稱”-->按一下“定義名稱”(如圖6)。

圖6

按了“定義名稱”後,彈出一個東西(如圖7),在第一欄隨便輸入一個名稱,比如“天干”吧!這樣,“甲”、“乙”、“丙”、“丁”、“戊”五格便合稱做“天干”了。

圖7

同樣要為“甲子”、“丙丑”、“丁卯”等二十五個項目定義名稱,而且“甲子”~“甲辰”必須合稱做“甲”,“乙子”~“乙辰”合稱做“乙”,等等等等。換言之,是不是要再重覆五次“定義名稱”的工作呢?答案是否定的,你只需要將那二十五個項目、連同最頂欄的“甲”、“乙”、“丙”、“丁”、“戊”統統選定,然後在“公式”-->“定義的名稱”-->按一下“根據所選內容創建”(如圖8),又彈出一個東西,這裡只勾選“首行”,按“確定”即可(如圖9)。
圖8
圖9

現在按“公式”-->“定義的名稱”-->“名稱管理器”,可以看到“天干”、“甲”、“乙”……,一共有6個已定義的名稱,如圖10
圖10

準備功夫做完了。讀者可能已經注意到,我在A8A9兩格已經輸入了“第一級”、“第二級”等字眼。沒錯,我正要把B8這一格變成第一級的下拉清單,B9則是第二級,其選項會根據第一級的內容而變更。

首先搞第一級:
1.      選定B8這一格
2.      “數據”-->“數據工具”-->按一下“數據有效性”,如圖11
圖11
3.      彈出一個東西,在“設置”-->“允許”中選擇“序列”,在“來源”中輸入“=天干”(就是等於我們剛才定義的名字),如圖12
圖12 
4.      按“確定”即可,這時B8格旁邊多了個小箭咀,按一下就會見到“甲”、“乙” 、“丙”、“丁”、“戊”五個選項,如圖13
圖13

然後搞第二級。選定B9這格;步驟2同上;步驟3中,“設定”-->“允許”裡面還是選“序列”,“來源”那裡則輸入“=indirect($B$8)”,如圖14。然後確定即可。
圖14

結果如圖15a15b所示。不要佩服我,我是從網上學回來的。
圖15a
圖15b

應該說,這個方法的Bug還是很明顯的,例如第一級我先選“丁”,然後第二級選“丁卯”,再把第一級選成“甲”時,第二級不會馬上變回來(如圖16)。如果那不是天干地支表,而是個人資料表,要填入某某人的籍貫時,利用這一漏洞,惡搞的人就能輕鬆砌出“廣東省杭州市”、“陝西省廈門市”之類與事實不符的組合。
圖16

我要介紹的就是這些了,至於方法有沒有用、具體怎麼用、好不好用,就請讀者自行判斷了。

(文中的範例本來是要隨篇附送的,可是保存時死機了,所以就算鳥,望見諒~~)

~~~~~~~~~~~~~~~~~~~

題外話:最近因為重新開始大工程,寫Blog的時間不是很多。暫時就隨手寫這一篇來濫竽充數。

沒有留言:

張貼留言