从 VLOOKUP 收集与新列一起使用的行
Gather rows that go along with a new column from VLOOKUP
SampleSheet.xlsx - https://www.dropbox.com/s/ugha8sjvgrpi5w7/SampleSheet.xlsx?dl=0
这是我实际使用的小型通用版本。我的 "A" 列非常大,"B" 是较大列的选择。 "C" 到 "E" 列是每个人的数据(注意只有 "B" 中的人有这些数据。在 "G" 列中我有一个 VLOOKUP 来查看什么名字在 "B" 中有一个匹配项 "A"。问题是我如何自动提取匹配项在 "C-E" 中的数据。例如,在执行 VLOOKUP 时,"austin"将自动在其后添加行 "c1;c2;c3"。我知道这可能无法通过我为获取匹配名称所做的 VLOOKUP 实现。
我希望能够使用 a1、a2、a3 等数据创建一个 table,其中只有在 "A" 中匹配的名称。
例如,我最终想要的是这样的 table:desired result
如果您熟悉 Excel VBA,您可以将其编写为宏和 运行。
此处要考虑的变量,您可以根据需要更改它们:
- 使用活动sheet,因此您必须在 sheet 数据处于活动状态时使用宏
- 使用固定列号,
长数据在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
SampleSheet.xlsx - https://www.dropbox.com/s/ugha8sjvgrpi5w7/SampleSheet.xlsx?dl=0
这是我实际使用的小型通用版本。我的 "A" 列非常大,"B" 是较大列的选择。 "C" 到 "E" 列是每个人的数据(注意只有 "B" 中的人有这些数据。在 "G" 列中我有一个 VLOOKUP 来查看什么名字在 "B" 中有一个匹配项 "A"。问题是我如何自动提取匹配项在 "C-E" 中的数据。例如,在执行 VLOOKUP 时,"austin"将自动在其后添加行 "c1;c2;c3"。我知道这可能无法通过我为获取匹配名称所做的 VLOOKUP 实现。
我希望能够使用 a1、a2、a3 等数据创建一个 table,其中只有在 "A" 中匹配的名称。
例如,我最终想要的是这样的 table:desired result
如果您熟悉 Excel VBA,您可以将其编写为宏和 运行。
此处要考虑的变量,您可以根据需要更改它们:
- 使用活动sheet,因此您必须在 sheet 数据处于活动状态时使用宏
- 使用固定列号, 长数据在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