使用数组过滤和修改数据

时间:2018-06-28 14:33:27

标签: excel vba excel-vba

这是Extract and List Matching Cells

的后续帖子

现在,下面的代码比较同一工作表(A和B)中包含公司名称的两列。它会找到完全匹配的任何名称,并将它们列出在C列中。

我想对此进行修改,以使用从中获得A和B列的实际数据表。 A列源自工作表2,AF列。 B列来自工作表3的L列。数据从单元格2开始。

我也想修改结果:

当前:如果A列= B的行大于2,则C列获取B列的值

目标:如果Sheet2.Column AF = Sheet3.L列大于2的行,则New Sheet从Sheet3获取相应的行

Sub matchComps()
Application.ScreenUpdating = False
    Dim i As Long, j As Long, arrA As Variant, arrB As Variant, arrC As Variant

    With Worksheets("Sheet1")
        arrA = .Range(.Cells(3, "A"), .Cells(.Rows.Count, "A").End(xlUp)).Value2
        arrB = .Range(.Cells(3, "B"), .Cells(.Rows.Count, "B").End(xlUp)).Value2
        ReDim arrC(1 To Application.Min(UBound(arrA, 1), UBound(arrB, 1)), 1 To 1)

        For i = LBound(arrA, 1) To UBound(arrA, 1)
            If Not IsError(Application.match(arrA(i, 1), arrB, 0)) Then
                j = j + 1
                arrC(j, 1) = arrA(i, 1)
            End If
        Next i

        .Cells(3, "C").Resize(UBound(arrC, 1), UBound(arrC, 2)) = arrC
    End With
Application.ScreenUpdating = True
End Sub

这将为工作表(3)中与表(2)中的公司匹配的所有公司有效地在工作表(3)中创建新的数据表。

0 个答案:

没有答案