如何从下拉列表中自动选择一个值?

时间:2019-03-30 02:12:57

标签: excel vba

所以我有两张纸-SheetA和SheetB。

表单B包含一个下拉列表[Option1 / 2/3]和另一个单元格,该单元格的值会根据从下拉列表中选择的选项而相应地更改其值。

在SheetA中,我想列出所有选项-1,2,3及其各自从SheetB引用的值。

<Sheet B>

Drop-down List Options       CellX
======================       ======
Option 1/2/3                 10/20/30 (depending on the option chosen) 
<Sheet A>

Options     Value
========    ======
1           10
2           20
3           30 

我的思考过程: 如果SheetA!Options = 1,则Value = SheetB!CellX 如果SheetA!Options = 2,则值= SheetB!CellX

有什么方法可以自动选择下拉列表值并在SheetA中返回值?

1 个答案:

答案 0 :(得分:0)

有...

如果要在VBA中执行此操作,则需要为包含下拉列表选项的单元格触发一个事件。

在VBA编辑器中,从项目树中选择SheetA并添加以下代码:

Option Explicit 
Private Sub Worksheet_Change(ByVal Target As Range)

If ThisWorkbook.Sheets("SheetA").Range("A2") = 1 Then

    ThisWorkbook.Sheets("SheetA").Range("B2") = ThisWorkbook.Sheets("SheetB").Range("B2")

ElseIf ThisWorkbook.Sheets("SheetA").Range("A2") = 2 Then

    ThisWorkbook.Sheets("SheetA").Range("B2") = ThisWorkbook.Sheets("SheetB").Range("B3")

ElseIf ThisWorkbook.Sheets("SheetA").Range("A2") = 3 Then

    ThisWorkbook.Sheets("SheetA").Range("B2") = ThisWorkbook.Sheets("SheetB").Range("B4")

End If
End If

End Sub

尽管...您可以在SheetA的“值”列中仅使用这样的公式:

=INDEX(SheetB!B2:B4,MATCH(A2,SheetB!A2:A4,0))