【发布时间】:2021-12-23 00:55:02
【问题描述】:
我正在尝试在下面的代码上创建一个循环,因此如果 A 列与 B 列有多个匹配项,它会继续用 A 列中的数据填充 B 列。
有人建议我创建变体数组和循环数组,但在研究之后我还没有那么先进。谢谢。
Sub Test_match_fill_data()
Dim aCell
Dim e, k As Long, matchrow As Long
Dim w1, w2 As Worksheet
Dim cell As Range
Set w1 = Workbooks("Book1").Sheets("Sheet1")
Set w2 = Workbooks("Book2").Sheets("Sheet2")
e = w1.Cells(w1.Rows.Count, 1).End(xlUp).Row
k = w2.Cells(w2.Rows.Count, 1).End(xlUp).Row
For Each aCell In w1.Range("A2:A" & e)
On Error Resume Next
matchrow = w2.Columns("A:A").Find(What:=Left$(aCell.Value, 6) & "*", LookAt:=xlWhole).Row
On Error GoTo 0
If matchrow = 0 Then
Else
w2.Range("B" & matchrow).Value = aCell.Offset(0, 1).Value
End If
matchrow = 0
Next
End Sub
【问题讨论】:
-
sheet1 的 A 列中的值是否唯一?
-
旁注:您可以使用
Range变量来简化事情,而不是使用错误处理和混乱的逻辑来确定是否找到匹配项。Range.Find如果未找到,则返回Nothing。您可以将结果保存为Range,然后测试是否为Not matchrange Is Nothing。 -
@CDP1802 - 我在上面的 Book1 和 2 上添加了一些图片。我现在所拥有的工作,如果有多个匹配项,则不会添加到 Book2 的顾问列。
-
你能添加一张所需输出的图片吗?
-
Book2 Consultant 列是必需的输出.. 从空白开始,然后在宏运行后,它会填充顾问列
标签: arrays excel vba loops variant