宏以基于不同工作表中的值自动填充单元格

时间:2017-07-16 18:27:40

标签: excel vba

我很难找到一个用于以下用途的宏:

考虑这个例子:

enter image description here

考虑到我在“表1”中的表格中包含Country and Food及其值的列。

在表2中,我有两列名为Country#1和Food#1。我想要的宏,需要通过下拉列表自动填充与国家#1单元格中的正确文本相关联的Food#1单元格。

示例:当我在国家#1中选择“马德里”时,它需要使用“小吃和玉米饼”文本自动填充食物#1。

如果这是一个重新发布的问题,我很抱歉,但我没有看到任何接近的内容:|

祝你好运, 路易斯

1 个答案:

答案 0 :(得分:1)

您需要下面的工作表更改事件......

以下代码假设您在Sheet1上分别列有A和B列中的国家及其食物,而国家/地区下拉列表位于Sheet2上的A列。

右键单击Sheet2标签 - >查看代码 - >将以下代码放入打开的代码窗口。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
Dim wsSource As Worksheet
Dim r As Long
Set wsSource = Sheets("Sheet1")     'Source sheet which contains a table of countries and their food
If Target.Column = 1 And Target.Row > 1 Then
    If Application.CountIf(wsSource.Columns(1), Target.Value) > 0 Then
        Application.EnableEvents = False
        r = Application.Match(Target.Value, wsSource.Columns(1), 0)
        Target.Offset(0, 1) = wsSource.Cells(r, 2)
        Application.EnableEvents = True
    End If
End If
End Sub