Re: SVERWEIS
14.06.2002 16:47:56
Daniel R.
Hallo Achim
Eine Lösung mit VBA wäre gar nicht so kompliziert. Lass während dem Schreiben der Sverweis-Funktion den Makrorecorder laufen. Dabei wird die Funktion vollumfänglich in VBA generiert. Ich habe folgende Sverweis-Funktion aufgezeichnet (Cursor steht in Zelle a1):=WENN(D1>0;WENN(ISTFEHLER(SVERWEIS(D1;'C:\Master\[Artikelliste.xls]ROHSTOFFE 123'!$A$5:$B$5000;2;FALSCH));"Falsche Nummer";SVERWEIS(D1;'C:\Master\[Artikelliste.xls]ROHSTOFFE 123'!$A$5:$B$5000;2;FALSCH));"")
Dabei wird der folgende VBA-Code generiert:
ActiveCell.FormulaR1C1 = _
"=IF(RC[+3]>0,IF(ISERROR(VLOOKUP(RC[+3]," & pfad1 & "!R5C1:R5000C2,2,FALSE)),""Falsche Nummer"",VLOOKUP(RC[+3]," & pfad1 & "!R5C1:R5000C2,2,FALSE)),"""")"
Wenn ein Wert in die betreffende Zelle eingelesen wurde, muss die Sverweis-Funktion wieder gelöscht werden:
Selection.ClearContents
Den Pfad sowie den Dateinamen in der (VBA) Formel ersetze ich durch eine Variable (pfad1). Diese werden vorweg wie folgt definiert:
datei = "Artikelliste.xls"
pfad = "'C:\Master\[Artikelliste.xls]"
blatt1 = "ROHSTOFFE 123'"
blatt2 = "ROHSTOFFE passiv'"
pfad1 = pfad + blatt1
pfad2 = pfad + blatt2
Beachte die exakte Schreibweise Anführungs- und Abschlusszeichen.
Den Variablen kann nun über eine Zelle jeder beliebige Wert (Pfad oder Dateiname) übergeben werden. Das funktioniert tadellos. Die Tabellen aus denen Werte ausgelesen werden sollen, müssen nicht geöffnet werden.
Vielleicht hilft Dir dieser Hinweis weiter. Ansonsten melde dich noch mal.
Gruss Daniel R.