=INDEX(VERGLEICH...) nach VBA übersetzen

Ich habe eine Tabelle mit drei identisch großen Bereichen (Spalten), denen ich je einen Namen vergeben habe: ‚Personen‘, ‚Alter‘ und ‚Größe‘
Nun möchte ich zu einer speziellen Person (z.B. Thommes) wahlweise (indem in $A$1 ‚1‘ für Alter oder andere Werte für Größe eingegeben wird)
deren Alter oder deren Körpergröße heraussuchen lassen.
Da die Namensliste nicht alphabetisch sortiert ist, verwende ich folgende Tabellenfunktion:

=INDEX(WENN($A$1=1;Alter;Größe);VERGLEICH(„Thommes“:stuck_out_tongue_winking_eye:ersonen;0);1)

Soweit, sogut.

Nun muss ich das Ganze leider in einer VBA-Function(!!) unterbringen und krieg das überhaupt nicht auf die Reihe.
Der Funktionsaufruf sollte folgendermaßen lauten: =Such_funktion($A$1;„Thommes“).
Die 3 Bereiche ‚Personen‘, ‚Alter‘ und ‚Größe‘ möchte ich nur im Notfall mit übergeben müssen

Kann mir das jemand „übersetzen“?

verwende in VBA den Befehl:

formulalocal

verwende in VBA den Befehl:

formulalocal

Mir erzählt aber die Hilfe zu formulalocal das ich damit die in eine Zelle eingegebene Formel erhalte?!?

Ich brauchs aber genau andersrum. Ich brauch einen VBA-Code, der genau das selbe Ergebnis liefert, wie die Formel =INDEX(VERGLEICH( … )), die ich in die Zelle eingeben kann!

Sorry, wenn die Frage so mißverständlich formuliert war und trotzdem Danke für die Bemühungen

hab lange genug gesurft und probiert …
Die Tabellenformel

=INDEX(WENN($A$1=1;Alter;Größe);VERGLEICH(„Thommes“:stuck_out_tongue_winking_eye:ersonen;0);1)

kann als VBA-Function so geschrieben werden:

Function suchfunktion() As Double
Application.Volatile True
zeile = Application.WorksheetFunction.Match(„Thommes“, [Personen], 0)
If [A1] = 1 Then such = [Alter] Else such = [Größe]
suchfunktion = Application.WorksheetFunction.Index(such, zeile, 1, 1)
End Function

Trotzdem vielen Dank an alle, die die Anfrage gelesen und sich Gedanken dazu gemacht haben!!!

Thommes