从VLOOKUP中收集与新列一起的行

时间:2017-05-26 03:34:38

标签: excel vlookup

SampleSheet.xlsx - https://www.dropbox.com/s/ugha8sjvgrpi5w7/SampleSheet.xlsx?dl=0

这是我正在使用的一个小型通用版本。什么是我的“A”列非常大,“B”是较大列的选择。列“C”到“E”是与每个人一起的数据(注意只有“B”中的人有这个数据。在“G”列中,我有一个VLOOKUP,看看“B”中的名字是匹配的“A”。问题是我如何自动拉出匹配所具有的“CE”中的数据。例如,当执行VLOOKUP时,“austin”将自动获取行“c1; c2; c3”。理解这可能是我用VLOOKUP获得匹配名称所不可能的。

我希望能够创建一个包含a1,a2,a3等数据的表,其中只有名称与“A”匹配。

例如,我想要最终得到的是这样一个表:desired result

1 个答案:

答案 0 :(得分:0)

您可以将其编写为宏,并在熟悉Excel VBA时运行。

此处考虑的变量,您可以根据您的要求进行更改:

  • 使用活动表格,因此您必须在包含数据的工作表处于活动状态时使用宏
  • 使用修复列号, 长数据在A列中, 要查找的数据位于B到E列 输出从第J列开始
Dim result, lastrow1, lastrow2, lastrow
lastrow1 = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
For Y = 1 To lastrow1
result = Application.VLookup(ActiveSheet.Range("B" & Y),ActiveSheet.Range("A1:A16"), 1, False)
If Not IsError(result) Then
lastrow = ActiveSheet.Range("J" & Rows.Count).End(xlUp).Row + 1
ActiveSheet.Range("J" & lastrow) = result
ActiveSheet.Range("K" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 2, False)
ActiveSheet.Range("L" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 3, False)
ActiveSheet.Range("M" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 4, False)
End If
Next Y