为了在列中查找特定值并使用下一列中的相应值,我使用下面的代码。虽然它工作得很好,但我正在寻找一种更快的方法来进行搜索。
但是,我想要搜索的列的大小正在增加,您可以在代码的第一部分中看到。
这对于最多几百个值的列化速度来说足够快,但是当它具有超过20000个值时,它实际上正在减慢速度。由于我必须在用户表单中执行此操作十次,因此我希望能够更快地执行此操作。
Public Function LR3() As Long 'Func.loc. HW08
Worksheets("Sheetname").Activate
Application.Volatile
LR3 = Cells(Rows.Count, 1).End(xlUp).Row
End Function
For i = 1 To LR3
If CStr(Sheet11.Cells(i + 1, 1).Value) = FunctionalLocation.Value Then
Description.Value = Sheet11.Cells(i + 1, 2).Value
Else
'no action
End If
Next i
答案 0 :(得分:0)
使用字典,试试这个
Sub test()
Dim Dic As Object, key As Variant, LR3&, oCell As Range
Set Dic = CreateObject("Scripting.Dictionary")
LR3 = Cells(Rows.Count, 1).End(xlUp).Row
For Each oCell In Sheet11.Range("A1:A" & LR3)
If Not Dic.exists(oCell.Value) Then
Dic.Add oCell.Value, oCell.Offset(, 1).Value
End If
Next
For Each key In Dic
If key = FunctionalLocation.Value Then Description.Value = Dic(key)
Next
End Sub
答案 1 :(得分:-1)
我假设第二个代码片段是从一个较大的Sub中复制出来的,如果是这样的话,知道“FunctionalLocation”和“Description”究竟是什么就会有所帮助。
但我想这就是你想要的:
Sheet11.Description.Formula = "=VLOOKUP(A2:B" & LR3 + 1 & ",2,false)"
Sheet11.Range("C2").AutoFill Destination:=Range("C2:C" & LR3 + 1 & ""), Type:=xlLinearTrend