我有两张,其中一张有这样的数据:
对于一个人,可以有几行答案。
带有这些数据的第二张表:
这里有一个人只有一行有答案。
根据第二张表中的姓氏,我想在第一张表中搜索该人,如果该人在场,则将整行复制到另一张表。所以我的最终输出表将如下所示:
我的想法是,算法应该从数据2表中的表中获取姓氏,如果存在则在数据1表中查找它然后将整行复制到A3输出表中,接下来搜索数据2的其余部分以获得另一个外观。如果是空白单元格,则从数据2表中获取另一个姓氏,并将其执行到检测到数据2表空白空间的位置。但我不知道如何将其转换为VBA代码。
任何人都可以提供一些线索帮助吗?或者我可以在这里使用的宏?
我会非常感谢任何帮助。
答案 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