位置:首頁(yè) > 軟件操作教程 > 辦公軟件 > Excel > 問題詳情

學(xué)習(xí)教程:在Excel中制作下拉列表的三種方法

提問人:周麗平發(fā)布時(shí)間:2021-07-10

方法一:使用數(shù)據(jù)有效性

通過數(shù)據(jù)有效性可以在單元格中提供一個(gè)下拉箭頭,單擊下拉箭頭會(huì)彈出下拉列表。因?yàn)閱T工姓名都在每月的工資表中,而“個(gè)人工資表”中沒有這些人員姓名,所以必需先定義名稱,以便在“個(gè)人工資表”中設(shè)置數(shù)據(jù)有效性時(shí)進(jìn)行引用。

定義名稱的方法是單擊菜單“插入→名稱”,在定義名稱對(duì)話框中進(jìn)行定義,這里將“1月工資”表中的姓名區(qū)域B3:B14定義為“姓名”,如圖。

image.png

1、假如下拉列表放在“個(gè)人工資表”的C1單元格,選擇C1單元格,然后單擊菜單“數(shù)據(jù)→有效性”,選擇“設(shè)置”選項(xiàng)卡,在“有效性條件”區(qū)域中“允許”下方的下拉列表中選擇“序列”。

2、在“來源”下方的文本框中輸入“=姓名”。單擊“確定”。

image.png

3、在數(shù)據(jù)區(qū)C3:H14中用VLOOKUP函數(shù)對(duì)工資數(shù)據(jù)進(jìn)行關(guān)聯(lián)。例如第3行為1月工資,可以在C3單元格中輸入公式

=VLOOKUP($C$1,'1月工資'!$B$3:$H$14,2,0)”

在D3單元格中輸入公式:

=VLOOKUP($C$1,'1月工資'!$B$3:$H$14,3,0)

在C4單元格中輸入公式:

=VLOOKUP($C$1,'2月工資'!$B$3:$H$14,2,0)

其余單元格依此類推。這樣,只要在單擊C1單元格右側(cè)的下拉箭頭選擇員工姓名就可以查看其所有月份的工資情況。

方法二:用窗體控件

1、在菜單欄上右擊,在彈出的菜單中選擇“窗體”,將彈出“窗體”浮動(dòng)工具欄,單擊“組合框”控件。

image.png

2、將光標(biāo)放到表格中,這時(shí)光標(biāo)變成細(xì)黑十字形,在表格中畫一個(gè)組合框。

3、右擊組合框,在彈出的菜單中選擇“設(shè)置控件格式”。

image.png

在“設(shè)置控件格式”對(duì)話框中選擇“控制”選項(xiàng)卡,設(shè)置“數(shù)據(jù)源”區(qū)域?yàn)椤?#39;1月工資'!$B$3:$B$14”(或“姓名”),設(shè)置“單元格鏈接”為$J$1,如圖。

image.png

單擊“確定”回到表格中,按ESC鍵或在任一單元格單擊一下取消組合框的編輯狀態(tài)。這樣設(shè)置以后,我們?cè)谙吕斜碇羞x擇一個(gè)姓名后,在J1單元格中將出現(xiàn)該姓名在姓名列表中的相對(duì)位置。例如選擇第3個(gè)姓名“王霞”,J1單元格中返回?cái)?shù)值3。

4、在數(shù)據(jù)區(qū)C3:H14中用VLOOKUP函數(shù)對(duì)工資數(shù)據(jù)進(jìn)行關(guān)聯(lián),利用工資表中的序號(hào)數(shù)字返回工資數(shù)據(jù),方法同上。

方法三:用VBA控件工具箱中的組合框控件

1、在菜單欄上右擊,在彈出的菜單中選擇“控件工具箱”,將彈出“控件工具箱”浮動(dòng)工具欄,單擊“組合框”控件。

image.png

2、將光標(biāo)放到表格中,這時(shí)光標(biāo)變成細(xì)黑十字形,在表格中畫一個(gè)組合框。

3、右擊組合框,在彈出的菜單中選擇“屬性”。

image.png

4、在“屬性”窗口中,將ListFillRange屬性設(shè)置為“'1月工資'!B3:B14”。關(guān)閉“屬性”窗口 。

image.png

5、按Alt+F11,打開VBA編輯器,在“個(gè)人工資表”中添加 下列代碼:

Private Sub ComboBox1_Change()

Range("c1") = ComboBox1.Value

End Sub

6、在數(shù)據(jù)區(qū)C3:H14中用VLOOKUP函數(shù)對(duì)工資數(shù)據(jù)進(jìn)行關(guān)聯(lián),方法同上。

另外,也可以使用VBA代碼將員工名單添加到組合框中,有兩種方法供選擇:

在VBA編輯器的“工程”窗口中,雙擊“ThisWorkBook”,在右側(cè)的代碼窗口中輸入下列代碼:

1、使用 AddItem 方法添加項(xiàng)目:

Private Sub Workbook_Open()

Dim vName As Variant

Dim i As Integer

'創(chuàng)建列表

vName = Array("張梅", "黃中", "王霞", "應(yīng)軍軍", "鄭梟", "劉梅波", "李飛", "吳燕")

'使用 AddItem 方法

For i = LBound(vName) To UBound(vName)

Sheet3.ComboBox1.AddItem vName(i)

Next i

End Sub

2、使用 List 屬性添加項(xiàng)目:

Private Sub Workbook_Open()

Dim vName As Variant

Dim i As Integer

'創(chuàng)建列表

vName = Array("張梅", "黃中", "王霞", "應(yīng)軍軍", "鄭梟", "劉梅波", "李飛", "吳燕")

'使用 List 屬性

Sheet3.ComboBox1.List = WorksheetFunction.Transpose(vName)

End Sub

其中Sheet3是VBA編輯器“工程”窗口中與“個(gè)人工資表”名稱對(duì)應(yīng)的工作表,這里直接引用的是Sheet3,而不是工作表名稱。這樣,每次打開工作簿時(shí),姓名列表會(huì)自動(dòng)添加到組合框中。

繼續(xù)查找其他問題的答案?

回復(fù)(0)
返回頂部