嘗試在VBA中複製vlookup的功能,我能想到的最好的方法是:
Function VBALOOKUP(LUcell As Variant, LUArray As Range, LUColi As Long, OutColi As Long) As Variant
Dim Y() As Variant
Dim X As Long
'cycle through each cell in range and check if = to lookup cell then return value with same index in outcol
Y = LUArray
For X = LBound(Y) To UBound(Y)
If LUcell = Y(X, LUColi) Then
VBALOOKUP = Y(X, OutColi)
Exit For
End If
Next X
Erase Y
End Function
它可以工作,但是速度非常慢(大約比工作表函數慢 100 倍)。
看起來也許一種加快速度的方法是按字母順序對查找數組進行排序,並以某種方式跳到列表中的後面一點?我在這裡沒有專業知識,但似乎查看每個單獨的單元格來檢查它是否等於查找值,然後再進入下一個單元格不可能是最有效的方法,而且不可能實際的vlookup 函數是如何工作的。
如果您想知道“為什麼不只使用 vlookup”,我正在用 VBA 編寫一個腳本,該腳本在某一時刻執行類似於 vlookup 的操作(儘管具體情況稍微複雜一些,並且返回多個值而不僅僅是 1) 。我認為我不會要求 stackexchange 為我編寫所有程式碼,而是會觸及問題的核心。另外,我相信這個問題將比關於我的具體任務的問題更有利於更多人的未來參考。