我正在自动将数据表格行Data1与数据2匹配,
我是通过循环语句完成的,但是当行数增加时,问题需要花费很多时间
由于这个原因,我计划用vlookup做,在vlookup中只返回第一个出现的单元格但我需要找到所有匹配单元格并突出显示匹配的行,我在图中显示。
答案 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
答案 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