2017-05-26 86 views
-1

SampleSheet.xlsx新的一列走行 - https://www.dropbox.com/s/ugha8sjvgrpi5w7/SampleSheet.xlsx?dl=0收集与来自VLOOKUP

这是什么我真的有工作小,通用版本。我的“A”列会非常大,“B”是大列的选择。列“C”到“E”是与每个人一起的数据(注意只有“B”中的人拥有这些数据。在列“G”中,我有一个VLOOKUP来查看“B”中的名称与“A”,问题是我怎样才能自动拉取匹配的“CE”数据,例如,在执行VLOOKUP时,“奥斯汀”会自动获得“c1; c2; c3”行。理解这可能是不可能的,我用VLOOKUP来获得匹配的名字

我希望能够用a1,a2,a3等数据创建一个只有名称与“ A”

例如,我想落得像​​这样的表:desired result

回答

0

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

变量考虑这里,你可以改变他们根据你的要求:

  • 用途Activesheet因此而与数据表处于活动状态,您必须使用宏
  • 使用固定列数, 龙数据是在A列, 数据,以找到在列B至E从柱 输出开始Ĵ

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 
+0

我运行这个时出现错误:“外部程序无效”。我不熟悉VBA,我不知道如何解决这个问题。我只有一个模块正在运行。 – AustinGlad

+0

在你的模块中必须有Sub ......()和End Sub之间的代码块,其中.....是宏名称。这将运行一个代码块,它是Excel VBA中的宏。所以要运行代码,它必须在Sub()....和End Sub之间。 ...是宏名称,它可能是您当前正在处理的宏,或者您可以通过在将代码粘贴后将它命名为Sub()MyNewMacro并将其作为新宏记录下来,并在结尾添加一行End Sub。希望这是明确的。 –

+0

太好了。谢谢。 – AustinGlad