从其他Excel工作表查询完整的卡号

时间:2017-11-02 05:07:47

标签: excel vba excel-vba

我在同一个工作簿中有两个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。

1 个答案:

答案 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