大家知道,在Excel中可以通過設置數據的有效性來實現類似于網頁表單中的下拉菜單功能,這樣可以大大地提高數據的錄入速度和可靠性。但采用此方法要求下拉菜單中的選項不能過多,否則會影響錄入的速度。如果這些選項內容之間可進行分類、分組,那我們就可以用多個下拉選項(即級聯菜單)來解決此類問題。下面我們就從一個實例出發,給出在Excel中實現級聯菜單的兩種方法,希望能給使用Excel進行辦公的朋友提供幫助。一、自定義數據的有效性
圖1中有兩個工作表,其中Sheet1用來采集客戶資料,并將其名稱改為“客戶數據采集”,在Sheet2的A列中保存了所有的省份,B列中的數據為各省份所屬的縣市并將工作表名稱改為“地區”(假設這里設置了三個省份,即江蘇省、浙江省和安徽?。?。
1. 定義單元格區域名稱
選中“地區”表中江蘇省所屬縣市的單元格區域B2∶B14,依次單擊“插入”菜單中的“名稱”,選擇“定義”,彈出“定義名稱”對話框,在“在當前工作簿中的名稱”框中輸入所定義的名稱“江蘇”,單擊“確定”按鈕。類似地,我們可以將浙江省和安徽省所屬縣市的單元格區域名稱分別定義為“浙江”和“安徽”。
2. 設置數據的有效性
切換到“用戶數據采集”表中,選擇要選擇輸入省份的D列,單擊“數據”菜單中的“有效性”命令,彈出設置“數據有效性”對話框,在有效性條件的“允許”列表中選擇“序列”,在“來源”框中輸入“江蘇,浙江,安徽”(分隔符為英文狀態下的逗號,如圖2所示),單擊“確定”按鈕。接下來選中“所屬縣市”所在的E列,再次打開“數據有效性”對話框,在有效性條件的“允許”列表中選擇“序列”,在“來源”框中輸入公式“=INDIRECT(D2)”,單擊“確定”按鈕。
Cico提示:在關閉設置E列數據有效性對話框時,如系統彈出警告提示“源目前包含錯誤,是否繼續?”,只需確認就可以了。如果指定的D2單元格中已經選擇了一個省份再設置E列數據的有效性就不會出現此提示了。
3. 數據錄入
錄入客戶資料時,首先選擇客戶所在的省份,然后再打開其右側“所屬縣市”所在的單元格時,我們就可以從下拉菜單中找到我們所需的選項了。
二、用組合框工具實現
該方法是借助控件工具箱和VBA代碼來實現的。
1. 設計組合框
在工作表Sheet1中我們借助“控件工具箱”設計了如圖3所示的錄入界面,將工作表名稱改為“客戶數據采集”,在采集客戶的所屬地區時我們設計了兩個組合框,第一個組合框ComboBox1用來存放省份,第二個組合ComboBox2用來存放對應于第一個組合框的下屬的縣市。Sheet2(“地區”表)仍保留和原來一樣的內容。
2. 編寫組合框事件代碼
雙擊“客戶數據采集”表中的組合框ComboBox1,進入VBE編輯器,在代碼窗口中輸入其GotFocus事件代碼:
PRivate Sub ComboBox1_GotFocus( ) '清除組合框中的數值 ComboBox1.Clear ComboBox2.Clear '讀出"地區"表A列中的不同省份并將其添加到組合框1中 For i = 2 To Sheet2.[a1].End(xlDown).Row target = Sheet2.Cells(i, 1) '利用設置標志位要判斷數據是否重復 flag = 0 For j = 0 To ComboBox1.ListCount - 1 If ComboBox1.List(j) = target Then flag = 1 Next If flag = 0 Then ComboBox1.AddItem target End If Next End Sub 返回Excel工作表中,雙擊組合框ComboBox2,在代碼窗口中輸入其GotFocus事件代碼: Private Sub ComboBox2_GotFocus( ) ComboBox2.Clear '讀出"地區"表B列中屬于組合框1的縣市并將其添加到組合框2中 For i = 2 To Sheet2.[a1].End(xlDown).Row target = Sheet2.Cells(i, 1) If target = ComboBox1.Value Then ComboBox2.AddItem Sheet2.Cells(i, 2) End If Next End Sub
3. 運行效果
返回“客戶數據采集”表,單擊控件工具箱中的“退出設計模式”按鈕即可進入運行模式。在組合框ComboBox1中選擇一個省份,此時再單擊組合框ComboBox2的下拉按鈕時,我們就可以方便地選擇該省份所屬的縣市了。
Cico提示:除了在工作表中實現客戶的數據采集外,我們還可以通過窗體來實現此操作的錄入界面。如果我們需要更改組合框中的列表選項,只需在“地區”表(即Sheet2)中進行相應的更改就可以了。
兩種方法的比較:相比之下,用本文提供的第一種方法比較簡單,更適合于初學者和一般用戶。而第二方法則更適合利用Excel進行二次開發的讀者朋友,以便于設計人性化的數據錄入界面。
另外,在本例中,“地區”表中的地區數據如果需要添加或刪除,若用第一種方法實現,要求添加的同類數據必須要連續且需要重新定義單元格區域。如果用方法二實現,各省份和所屬縣市添加時可以連續也可以不連續,就這一點而言,比第一種方法要便捷多了。
相信大家在耐心地看完本文以后已經掌握了這兩種在Excel中制作級聯菜單的方法,只要進行簡單的變通,就可以將本文所介紹的技巧應用到其他類似的場合,去解決我們日常辦公中遇到的問題。
新聞熱點
疑難解答