如何从不同的工作表VBA中获取值

时间:2018-06-07 08:36:22

标签: excel database vba excel-vba

我有两个不同的Excel工作表,第一个是Formular,第二个用作Little数据库。我和VBA一起工作。

这个想法是,当您在工作表1的第一列中键入Id编号时,它会在数据库工作表中搜索该ID编号,并获取位于ID编号列右侧的文本。

Worksheets Image

1 个答案:

答案 0 :(得分:4)

你可以在没有VBA的情况下做到这一点。在工作表中,在B列中使用此公式:

=VLOOKUP(A:A,database!A:B,2,FALSE)

其中database是数据库工作表的名称。

如果您需要自动填充该公式,可以使用Worksheet_Change事件。但请注意,这可能会降低您的工作表速度,并可能产生奇怪的副作用,我不会推荐它。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("A")) Is Nothing Then
        Target.Columns(2).Formula = "=VLOOKUP(A:A,database!A:B,2,FALSE)"
    End If
End Sub

根据以下评论进行编辑:

如果要在2个不同的列中查找,则需要在第一列中查找,如果它不存在,则查找另一列:

=IFNA(VLOOKUP(A:A,database!A:B,2,FALSE),VLOOKUP(A:A,database!C:D,2,FALSE))

此公式假设您在A:B中已有C:D列中的另一个集合。因此它首先在A和结果B中查找,如果没有找到,则在C中查找并且结果为D.