Excel vlookup可以获取所有出现的单元格详细信息吗?

时间:2016-07-12 10:25:29

标签: excel vba excel-vba excel-formula vlookup

我正在自动将数据表格行Data1与数据2匹配,

我是通过循环语句完成的,但是当行数增加时,问题需要花费很多时间

由于这个原因,我计划用vlookup做,在vlookup中只返回第一个出现的单元格但我需要找到所有匹配单元格并突出显示匹配的行,我在图中显示。

enter image description here

3 个答案:

答案 0 :(得分:0)

直接使用单元格会降低代码性能。尝试将Data1和Data2设置为数组并使用数组。

这样的事情:

With ActiveSheet
    arr = .Range(.[A2], .Cells(.Rows.Count, "A").End(xlUp)).Value
    arr2 = .Range(.[D2], .Cells(.Rows.Count, "D").End(xlUp)).Value

    For i& = 1 To UBound(arr)
        For j& = 1 To UBound(arr2)
            If arr(i, 1) = arr2(j) Then
                ...
            End If
        Next j
    Next i
End With

答案 1 :(得分:0)

希望你正在寻找这个

Sub testvlookup()
    Dim lastrow, lastrowdata, incre, i, j As Long
    lastrow = Range("A" & Rows.Count).End(xlUp).Row
    lastrowdata = Range("D" & Rows.Count).End(xlUp).Row
    incre = 6
    For i = 2 To lastrow
        For j = 2 To lastrowdata
            If Range("A" & i).Value = Range("D" & j).Value Then
                Range("D" & j, "G" & j).Interior.ColorIndex = incre
            End If
        Next j
        incre = incre + 1
    Next i
End Sub

enter image description here

答案 2 :(得分:0)

我不明白为什么它应该减慢许多行的速度,最好有更多关于它的信息。

我会像其他人那样做,用100000比较需要约1秒。

Dim i As Integer
Dim b As Integer

i = 1

While i < 20000
Range("A1:A5").Copy Range(Cells(i, 4), Cells(i + 5, 4))
i = i + 5
Wend

MsgBox ("hi")
i = 1
While i < 7
   b = 3
While b < 20000
    If Cells(i, 1).Value = Cells(b, 4).Value Then
        Cells(b, 4).Interior.ColorIndex = i
    End If
b = b + 1
Wend
i = i + 1
Wend
End Sub