我在同一个工作簿中有两个Excel工作表。 一个包括卡片的交易信息,如Sheet1
Transaction Date Card Number Amount (To be fill) Owner Information
11/01/2017 5678 $39.99 -
11/02/2017 1234 $39.99 -
另一个包括卡片的信息,如Sheet2
Create Date Card Number Owner Information
10/01/2017 5678 xxxx@gmail.com
10/01/2017 1234 xxxx@gmail.com
10/01/2017 2345 xxxx@gmail.com
我希望以快速/批处理的方式将所有者信息从sheet2复制到sheet1中的匹配行。
现在,我手动搜索Sheet2中的卡号,并将粘贴复制到Sheet1。但我如何自动或批量搜索并实现这一目标呢?
(PS。我确实有T-SQL背景,但ADO不将列作为参数) 我在MAC中使用Excel 2011。
答案 0 :(得分:0)
使用集合引用多个列表之间的唯一值。
注意:通常您会看到用于此任务的Scripting.Dictionary,但我不相信它在Mac上可用。所以我使用了标准的VBA Collection。
Sub Batch_Owner_Information()
Application.ScreenUpdating = False
Dim c As New Collection
Dim cell As Range, rInfo As Range
With ThisWorkbook.Worksheets("Sheet2")
For Each cell In .Range("B2", .Range("B" & .Columns.Count).End(xlUp))
On Error Resume Next
c.Add cell, cell.Text
On Error GoTo 0
Next
End With
With ThisWorkbook.Worksheets("Sheet1")
For Each cell In .Range("B2", .Range("B" & .Columns.Count).End(xlUp))
On Error Resume Next
Set rInfo = c(cell.Text)
If Err.Number = 0 Then
cell.Offset(0, 2).Value = rInfo.Offset(0, 1).Value
End If
On Error GoTo 0
Next
End With
Application.ScreenUpdating = True
End Sub