首页 > 解决方案 > 使用数组过滤和修改数据

问题描述

这是提取和列出匹配单元格的后续帖子

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

我想修改它以使用从 A 列和 B 列派生的实际数据表。A 列来自第 2 页的 AF 列。B 列源自工作表 3,L 列。数据从单元格 2 开始。

我还想修改结果:

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

目标:如果 Sheet2.Column AF = Sheet3.Column 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

这将有效地在表 (4) 中为表 (3) 中的所有公司创建一个新的数据表,这些公司使用表 (3) 中的数据与表 (2) 中的公司匹配。

标签: vbaexcel

解决方案


推荐阅读