Beim Versuch, die Funktion „vlookup“ in VBA zu kopieren, ist das Beste, was mir einfällt, Folgendes:
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
Es funktioniert, ist aber unglaublich langsam (etwa 100-mal langsamer als die Arbeitsblattfunktion).
Es scheint, als könnte man das Ganze beschleunigen, indem man das Lookup-Array alphabetisch sortiert und irgendwie zu einem späteren Punkt in der Liste springt. Ich bin hier kein Experte, aber es scheint, als wäre es nicht die effizienteste Methode, jede einzelne Zelle zu prüfen, um zu überprüfen, ob sie dem Lookup-Wert entspricht, bevor man dann zur nächsten Zelle geht, und so kann die eigentliche Vlookup-Funktion auch nicht funktionieren.
Wenn Sie sich fragen, „warum nicht einfach Vlookup verwenden“, ich schreibe ein Skript in VBA, das an einer Stelle etwas Ähnliches wie ein Vlookup ausführt (obwohl die konkrete Situation etwas komplizierter ist und mehrere Werte zurückgibt, nicht nur 1). Anstatt Stackexchange zu bitten, meinen gesamten Code für mich zu schreiben, dachte ich, ich würde zum Kern des Problems vordringen. Außerdem glaube ich, dass diese Frage für künftige Referenzen für viel mehr Leute hilfreich sein wird, als es eine Frage zu meiner konkreten Aufgabe wäre.