sverweis in excel

Bennyaa

Lieutenant
Registriert
März 2007
Beiträge
828
Hl Leute ich will eine Tabelle nach werten abfragen und dann den dazugehörigen text in eine Zelle einfügen. leider erscheint nur #Name?, kann mir jemand helfen?


Also ich habe z.B. dies in einem VBA Modul geschrieben:

Code:
Range("D" & i) = "=VLOOKUP(Bestellung!RC[-1],Mekong!A2:C5,2,0)"

und excel macht dann in der Zelle das hier daraus:

Code:
=SVERWEIS(Bestellung!C8;Mekong!'A2':$E:$E;2;0)

wo kommt denn das ochkomme bei A2 her und wo kommen die $ her?
 
Um einen Sverweis machen zu können musst Du einen Tabellenbereich haben, aus dem die Werte ausgelesen werden, quasi eine Art Hilfstabelle in denen sich die Werte befinden, die dann vom Sverweis abgefragt und eingetragen werden.
 
Was soll denn RC[-1] machen? Bei mir daraus C1, und wenn man statt RC[-1] eine eindeutige Zelle angibt, dann klappts auch.
 
Mr. Snoot schrieb:
Was soll denn RC[-1] machen?
Das ist in etwa wie OFFSET(). In diesem Fall: ROW[-0]COLUMN[-1]. also gleiche Zeile (ohne eckige Klammern, könnte auch +0 oder -0 sein), Spalte -1, also 1 nach links.

Also, Bennyaa hat als aktuelle Zelle die Tabelle Bestellung und dort die Zelle C9. Durch die Anweisung RC[-1] wird daraus Bestellung!C8, weil gleiche Zeile und aus Spalte 9 wird Spalte 8.
 
Okay, danke für die Aufklärung. Aber daran scheint Excel zu straucheln.

Wenn möglich würde ich dann die gewünschte Zelle (die RC[-1] entspricht) in eine Variable (bspw. 'zelle') speichern und diese dann in die Formel packen:
"=VLookup(Bestellung!" & zelle & ",Mekong!A2:C5,2,0)"​
Dann sollte es laufen.
 
Ich habe Mr. Snoots Lösung nicht probiert, aber sie könnte hinhauen. Sollte sie auch. Aber ...

Die Ursprungsfrage war ja, warum die Formel so "verhunzt" wird. Na ja, ich bin mir nicht sicher, ob da bei der Aufzeichnung des Vorgangs so richtig viel nachgearbeitet worden ist.

Egal, die Formel (der Code) an sich ist nicht korrekt. Die "saubere" Lösung sieht so aus:
Code:
Range("D" & i).[B][COLOR="Red"]FormulaR1C1[/COLOR][/B] = "=VLOOKUP(RC[-1],Mekong![B][COLOR="Red"]R2C1:R5C3[/COLOR][/B],2,0)"
Das läuft auch prima und ohne Macken. Zur indirekten Adressierung (siehe mein Beitrag weiter oben): Excel-VBA findet das gut so, weil das etwas schneller ist.

Ich selbst bevorzuge, mit Bereichsnamen zu arbeiten. Da kommt es nicht zu solchen Schlappen und ich kann aufzeichnen, ohne Unmengen nacharbeiten zu müssen. Angenommen, der Bereich Mekong!A2:C5 hat den Bereichsnamen Mekongsuche, dann sieht die Codezeile so aus:
Code:
    Range("D" & i).FormulaR1C1 = "=VLOOKUP(RC[-1],Mekongsuche,2,0)"
Du siehst, der Bereichsname erleichtert so manches... :) Außerdem wird der Code kürzer und übersichtlicher.

Und zu deiner Frage mit den $-Zeichen: Die müssen im Normalfall sein, denn wenn du solch eine Formel dann in Blatt Bestellung nach unten kopierst, dann darf natürclich der Zielbereich nicht angepasst werden. Da "denkt" Excel-VBA schon mit.
 
Zurück
Oben