3 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果我們要談?wù)撔阅?,那么沒有替代品可以運(yùn)行一些測(cè)試。以我的經(jīng)驗(yàn),Application.Match()比調(diào)用使用循環(huán)的函數(shù)要慢十倍。
Sub Tester()
Dim i As Long, b, t
Dim arr(1 To 100) As String
For i = 1 To 100
arr(i) = "Value_" & i
Next i
t = Timer
For i = 1 To 100000
b = Contains(arr, "Value_50")
Next i
Debug.Print "Contains", Timer - t
t = Timer
For i = 1 To 100000
b = Application.Match(arr, "Value_50", False)
Next i
Debug.Print "Match", Timer - t
End Sub
Function Contains(arr, v) As Boolean
Dim rv As Boolean, lb As Long, ub As Long, i As Long
lb = LBound(arr)
ub = UBound(arr)
For i = lb To ub
If arr(i) = v Then
rv = True
Exit For
End If
Next i
Contains = rv
End Function
輸出:
Contains 0.8710938
Match 4.210938
- 3 回答
- 0 關(guān)注
- 580 瀏覽
添加回答
舉報(bào)