PDA

Vollständige Version anzeigen : Vlookup


SaschaBHH
27.07.2012, 17:11
Hallo Ihr Lieben,

eigentlich bin ich mehr im Access Forum zu Hause, aber nun versuche ich mal was mit Excel.

Als alternative zum Sverweis() in VBA habe durch ergoogeln die Vlookup Funktion gefunden.

Ich habe nun ein Problem mit den ersten Argument der Funktion.

b = WorksheetFunction.VLookup(BuchungsNr, Sheets("Adressen Grö_").[A11:AR9556], 36, False)

Buchungsnummer ist eine als Variant deklarierte Variable. Nutze ich die Funktion mit der Variable erscheint der Fehler 1004

"Die VlookUp Eigenschaft des WorksheetFunction Ojektes kann nicht zugeordnet werden"

Setze ich den Wert des ersten Argumentes auf 41132 oder hole den Wert aus einer Zelle [D11] funktioniert alles einwandfrei. (Hinweis: Die o.g. Variable Buchungsnr enthält auch den Wert)

Kann ich innerhalb von Vlookup Argumenten keine Variablen nutzen, bzw gibt es eine alternative zu SVerweis in VBA...?

Vielen Dank für die Hilfe

EarlFred
27.07.2012, 17:24
Hallo Sascha,

Sverweis (engl. Vlookup) ist ziemlich "zickig", was die Variablentypen angeht (VBA nutzt die gleiche Arbeitsblattfunktion - die Arbeitsweise ist also identisch). Die Suche nach 123 oder "123" kann unterschiedliche Ergebnisse liefern. Als Alternative zum Sverweis würde ich die Find-Methode des Range-Objektes verwenden.

Grüße
EarlFred

Beverly
27.07.2012, 17:25
Hi Sascha,

ich nehme an, die BuchungsNr steht in Spalte A? Versuche es auf diese Weise (ungetestet):

Sub Suchen()
Dim rngZelle As Range
With Worksheets("Adresen_Grö_")
Set rngZelle = .Range("A11:A10000").Find(BuchungsNr, lookat:=xlWhole)
If Not rngZelle Is Nothing Then MsgBox rngZelle.Offset(0, 35)
End With
Set rngZelle = Nothing
End Sub

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

SaschaBHH
27.07.2012, 17:39
Hallo Ihr Beiden!

Danke für das schnelle Feedback.

Die genannte Alternative prüft nur, ob der Wert vorhanden ist. Verstehe ich das Richtig?

Was möchte ich erreichen?

- ich will testen ob der gesuchte Wert (BUNR) vorhanden ist, wenn ja
- beliebige Spalten aus der Reihe an Variablen (strName = Spalte 2) übergeben.

BUNR|Name|Vorname
123|Burg|Hansi

Beverly
27.07.2012, 20:24
Hi Sascha,

mein Code prüft, ob die die gesuchte BuchungsNr in Spalte A vorhanden ist. Wenn ja, wird der Wert aus der selben Zeile 35 Spalten weiter rechts wiedergegeben - also genau das was SVERWEIS() macht. Falls du den Wert aus einer anderen Spalte benötigst, musst du nur den Spaltenversatz in Offset(Zeilenversatz, Spaltenversatz) entsprechend ändern.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

SaschaBHH
28.07.2012, 14:58
Hallo Karin,

Danke! :-) Das Excel Objekt ist mir derzeit noch Fremd. Es funktioniert Super, habe noch die Find Parameter um LookIn:=xlValues ergänzt!

Danke & schönes Wochenende noch