Excel中如何實(shí)現(xiàn)級聯(lián)菜單
Office Excel是由微軟公司開發(fā)的一種電子表格程序,是微軟Office系列核心組件之一,可提供對于 XML 的支持以及可使分析和共享信息更加方便的新功能。
下面一起看學(xué)習(xí)Excel知識。
大家知道,在Excel中可以通過設(shè)置數(shù)據(jù)的有效性來實(shí)現(xiàn)類似于網(wǎng)頁表單中的下拉菜單功能,這樣可以大大地提高數(shù)據(jù)的錄入速度和可靠性。但采用此方法要求下拉菜單中的選項(xiàng)不能過多,否則會(huì)影響錄入的速度。如果這些選項(xiàng)內(nèi)容之間可進(jìn)行分類、分組,那我們就可以用多個(gè)下拉選項(xiàng)(即級聯(lián)菜單)來解決此類問題。下面我們就從一個(gè)實(shí)例出發(fā),給出在Excel中實(shí)現(xiàn)級聯(lián)菜單的兩種方法,希望能給使用Excel進(jìn)行辦公的朋友提供幫助。一、自定義數(shù)據(jù)的有效性
兩個(gè)工作表,其中Sheet1用來采集客戶資料,并將其名稱改為“客戶數(shù)據(jù)采集”,在Sheet2的A列中保存了所有的省份,B列中的數(shù)據(jù)為各省份所屬的縣市并將工作表名稱改為“地區(qū)”(假設(shè)這里設(shè)置了三個(gè)省份,即江蘇省、浙江省和安徽省)。
1. 定義單元格區(qū)域名稱
選中“地區(qū)”表中江蘇省所屬縣市的單元格區(qū)域B2∶B14,依次單擊“插入”菜單中的“名稱”,選擇“定義”,彈出“定義名稱”對話框,在“在當(dāng)前工作簿中的名稱”框中輸入所定義的名稱“江蘇”,單擊“確定”按鈕。類似地,我們可以將浙江省和安徽省所屬縣市的單元格區(qū)域名稱分別定義為“浙江”和“安徽”。
2. 設(shè)置數(shù)據(jù)的有效性
切換到“用戶數(shù)據(jù)采集”表中,選擇要選擇輸入省份的D列,單擊“數(shù)據(jù)”菜單中的“有效性”命令,彈出設(shè)置“數(shù)據(jù)有效性”對話框,在有效性條件的“允許”列表中選擇“序列”,在“來源”框中輸入“江蘇,浙江,安徽”(分隔符為英文狀態(tài)下的逗號),單擊“確定”按鈕。接下來選中“所屬縣市”所在的E列,再次打開“數(shù)據(jù)有效性”對話框,在有效性條件的“允許”列表中選擇“序列”,在“來源”框中輸入公式“=INDIRECT(D2)”,單擊“確定”按鈕。
Cico提示:在關(guān)閉設(shè)置E列數(shù)據(jù)有效性對話框時(shí),如系統(tǒng)彈出警告提示“源目前包含錯(cuò)誤,是否繼續(xù)?”,只需確認(rèn)就可以了。如果指定的D2單元格中已經(jīng)選擇了一個(gè)省份再設(shè)置E列數(shù)據(jù)的有效性就不會(huì)出現(xiàn)此提示了。
3. 數(shù)據(jù)錄入
錄入客戶資料時(shí),首先選擇客戶所在的省份,然后再打開其右側(cè)“所屬縣市”所在的單元格時(shí),我們就可以從下拉菜單中找到我們所需的選項(xiàng)了。
二、用組合框工具實(shí)現(xiàn)
該方法是借助控件工具箱和VBA代碼來實(shí)現(xiàn)的。
1. 設(shè)計(jì)組合框
在工作表Sheet1中我們借助“控件工具箱”設(shè)計(jì)了所示的錄入界面,將工作表名稱改為“客戶數(shù)據(jù)采集”,在采集客戶的所屬地區(qū)時(shí)我們設(shè)計(jì)了兩個(gè)組合框,第一個(gè)組合框ComboBox1用來存放省份,第二個(gè)組合ComboBox2用來存放對應(yīng)于第一個(gè)組合框的下屬的縣市。Sheet2(“地區(qū)”表)仍保留和原來一樣的內(nèi)容。
2. 編寫組合框事件代碼
雙擊“客戶數(shù)據(jù)采集”表中的組合框ComboBox1,進(jìn)入VBE編輯器,在代碼窗口中輸入其GotFocus事件代碼:
Private Sub ComboBox1_GotFocus( )
‘清除組合框中的數(shù)值
ComboBox1.Clear
ComboBox2.Clear
‘讀出"地區(qū)"表A列中的不同省份并將其添加到組合框1中
For i = 2 To Sheet2.[a1].End(xlDown).Row
target = Sheet2.Cells(i, 1)
‘利用設(shè)置標(biāo)志位要判斷數(shù)據(jù)是否重復(fù)
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
‘讀出"地區(qū)"表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. 運(yùn)行效果
返回“客戶數(shù)據(jù)采集”表,單擊控件工具箱中的“退出設(shè)計(jì)模式”按鈕即可進(jìn)入運(yùn)行模式。在組合框ComboBox1中選擇一個(gè)省份,此時(shí)再單擊組合框ComboBox2的下拉按鈕時(shí),我們就可以方便地選擇該省份所屬的縣市了。
Cico提示:除了在工作表中實(shí)現(xiàn)客戶的數(shù)據(jù)采集外,我們還可以通過窗體來實(shí)現(xiàn)此操作的錄入界面。如果我們需要更改組合框中的列表選項(xiàng),只需在“地區(qū)”表(即Sheet2)中進(jìn)行相應(yīng)的更改就可以了。
兩種方法的比較:相比之下,用本文提供的第一種方法比較簡單,更適合于初學(xué)者和一般用戶。而第二方法則更適合利用Excel進(jìn)行二次開發(fā)的讀者朋友,以便于設(shè)計(jì)人性化的數(shù)據(jù)錄入界面。
另外,在本例中,“地區(qū)”表中的地區(qū)數(shù)據(jù)如果需要添加或刪除,若用第一種方法實(shí)現(xiàn),要求添加的同類數(shù)據(jù)必須要連續(xù)且需要重新定義單元格區(qū)域。如果用方法二實(shí)現(xiàn),各省份和所屬縣市添加時(shí)可以連續(xù)也可以不連續(xù),就這一點(diǎn)而言,比第一種方法要便捷多了。