Excel 宏根据不同工作表中的值自动填充单元格

Excel 宏根据不同工作表中的值自动填充单元格,excel,vba,Excel,Vba,我很难找到用于以下用途的宏: 考虑到这个例子: 假设我在表1中有一个表,其中列为Country,列为Food,列为其值 在表2中,我有两列,分别命名为Country1和Food1。我想要的宏需要通过下拉列表自动填充与Country1单元格中的右文本关联的Food1单元格 示例:当我在Country1中选择Madrid时,它需要用文本Tapas和tortillas自动填充Food1 如果这是一个重新发布的问题,我很抱歉,但我没有看到任何类似的问题:| 致以最良好的祝愿, Luís您需要一个如下所示

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

考虑到这个例子:

假设我在表1中有一个表,其中列为Country,列为Food,列为其值

在表2中,我有两列,分别命名为Country1和Food1。我想要的宏需要通过下拉列表自动填充与Country1单元格中的右文本关联的Food1单元格

示例:当我在Country1中选择Madrid时,它需要用文本Tapas和tortillas自动填充Food1

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

致以最良好的祝愿,
Luís

您需要一个如下所示的换页事件

以下代码假设您在表1的a列和B列中分别有一个国家及其食品列表,而国家下拉列表在表2的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

对我来说非常好。非常感谢:很抱歉打扰您,但这段代码可以按比例缩放,使我可以自动填充多个列?例如,不只是填写表2中的Food1列,而是填写表1中的Toys1、甜点1、Main1和Dish1列,就像主问题中的例子一样?@Luís请打开一个新问题,分享您当前使用的数据和代码的屏幕截图,并描述它对您的作用,以便其他成员也可以查看它。