我有“ for i = 1 to x”循环来填充列,但是速度很慢。 我对vba的了解不足,无法以其他方式知道。
这是我的代码:
Dim j As Long
j = 6
For i = 4 To EFlast_row
If InStr(ef.Cells(i, ActualTitleColumn).Value, search.Cells(searchboxrow, searchboxcolumn).Value)Then
search.Cells(j, SearchLayerColumn).Value = ef.Cells(i, layercolumn).Value
j = j + 1
End If
Next i
任何帮助将不胜感激。 谢谢
答案 0 :(得分:0)
此代码会将工作表中的数据放入一个范围变量。使用范围变量的比较比使用类似参考的速度要快得多:
Sheets("Sheet1").Cells(1,1).Value
您将需要对此进行更新以反映您正在使用的变量。
Function search()
' Put data on sheets into ranges
Dim rangeOne As Range, rangeTwo As Range
Set rangeOne = Sheets("Sheet1").UsedRange
Set rangeTwo = Sheets("Sheet2").UsedRange
' Iterands for rangeOne and rangeTwo respectively
Dim i As Long, j As Long
For i = 2 To rangeOne.Rows.Count
For j = 2 To rangeTwo.Rows.Count
If InStr(rangeOne(i, 1).Value2, rangeTwo(j, 1).Value2) Then
rangeTwo(j, 2).Value2 = rangeOne(i, 2).Value2
End If
Next j
Next i
End Function