使用VBA Vlookup获得多个结果

时间:2018-02-12 18:31:25

标签: excel vba excel-vba vlookup

我有两张,其中一张有这样的数据:

Data 1

对于一个人,可以有几行答案。

带有这些数据的第二张表:

Data 2

这里有一个人只有一行有答案。

根据第二张表中的姓氏,我想在第一张表中搜索该人,如果该人在场,则将整行复制到另一张表。所以我的最终输出表将如下所示:

Output

我的想法是,算法应该从数据2表中的表中获取姓氏,如果存在则在数据1表中查找它然后将整行复制到A3输出表中,接下来搜索数据2的其余部分以获得另一个外观。如果是空白单元格,则从数据2表中获取另一个姓氏,并将其执行到检测到数据2表空白空间的位置。但我不知道如何将其转换为VBA代码。

任何人都可以提供一些线索帮助吗?或者我可以在这里使用的宏?

我会非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是一个VBA子程序,我相信它会做你所要求的,不确定它是否是你想要的。这假设您已经有一个选项卡来接收要复制的数据;正在使用的选项卡是MRWV1 =要选择的名称,MRWV2 =要复制的行的数据表,MRWV3 =要接收复制数据的工作表。

    Sub MRWV()
    '
    ' MRWV Macro
    '
    '   Housekeeping
        vFoundKt = 1
        vSourceRows = 0
        vDataRows = 0
    '   Select the sheet with the five rows with the names to select
        Sheets("MRWV1").Select
        vSourceRows = Cells(Rows.Count, 1).End(xlUp).Row
        Sheets("MRWV2").Select
        vDataRows = Cells(Rows.Count, 1).End(xlUp).Row
        'Get names from source sheet
        For iSource = 2 To vSourceRows
            Sheets("MRWV1").Select
            Range("A" & iSource).Select
            vSourceName1 = ActiveCell.Value
            Range("B" & iSource).Select
            vSourceName2 = ActiveCell.Value
            'Look through data sheet for matching names
            For iData = 2 To vDataRows
                Sheets("MRWV2").Select
                Range("A" & iData).Select
                vDataName1 = ActiveCell.Value
                Range("B" & iData).Select
                vDataName2 = ActiveCell.Value
                If vSourceName1 = vDataName1 And vSourceName2 = vDataName2 Then
                    vFoundKt = vFoundKt + 1
                    Range("A" & iData & ":I" & iData).Select
                    Selection.Copy
                    Sheets("MRWV3").Select
                    Range("C" & vFoundKt).Select
                    Selection.PasteSpecial Paste:=xlPasteValues,Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                End If
            Next
        Next
    End Sub