Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XVerweis vs. XLookup

XVerweis vs. XLookup
20.01.2021 17:58:08
Kay
Hallo zusammen,
mit der neuen XVerweis Funktion kann ich super auf geschlossene Dateien mit direkter Angabe der Adressbereiche arbeiten.
Leider funktioniert die Indirekt Methode in Kombination nicht, soll heißen, man muss vor genau festlegen, was man wo sucht und das so eingeben.
Nun wollte ich die gleiche Vorgehensweise in VBA anwenden, und zwar mit dem Aufruf Application.WorksheetFunction.XLooup(....) .
Eigentlich bin ich davon ausgegangen, dass wenn XVerweis auf geschlossene Dateien zugreifen kann, dann auch XLookup.
Aber leider bekomme ich nur Werte, wenn ich auch die Datei geöffnet habe, anders als beim XVerweis, bei dem ich bei geschlossener Test.xlsx in der Tabelle selber als Funktion Werte bekomme.
Hier mal ein Testaufruf, den ich in einer function in VBA abgebildet habe:
myfunc = Application.WorksheetFunction.XLookup(
"Suchtext", Workbooks("C:\daten\test.xlsx").Worksheets("Tabelle1").Range("A1:A100"), Workbooks("C:\daten\test.xlsx").Worksheets("Tabelle1").Range("B1:B100"), "no match", 0, 1, 1)
Besteht da grundsätzlich ein Unterscheid oder übergebe ich nur die Werte falsch. Rückgabe ist immer #Wert.
Dank Kay

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XVerweis vs. XLookup
20.01.2021 18:32:21
Daniel
Hi
VBA kann nur mit geöffneten Dateien arbeiten.
Bei WorksheetFunction verwendest du zwar die Execlfunktion, aber alles andere, auch die einzelnen Parameter innerhalb der Funktion, sind VBA und es gelten die Spielregeln von VBA.
Wenn du in VBA auf eine geschlossene Datei zugreifen willst, gibt es nur eine Möglichkeit:
1. erstellen in VBA die Berechnung als Formeltext wie er in einer Zelle stehen würde, am besten in englischer Schreibweise mit A1-Adressen.
2. schreibe diesen Formeltext in eine Zelle und lies das Ergebnis aus
Oder
Werte den Formeltext mit der Funktion Evaluate("Formeltext") aus.
Da du in VBA bist, besteht weiterhin auch die Möglichkeit, dass du die Datei schreibgeschützt öffnest und dann damit arbeitest.
Das kann vorteilhaft sein, weil Zugriffe auf geöffnete Dateien schneller sind als auf geschlossene und weil du die Datei ggf bearbeiten kannst (sortieren, Zellbereiche bestimmen) um effektiveres Formelwerk einsetzen zu können (SVerweis mit 4.Parameter = wahr)
Ob das was bringt, hängt vom Einzelfall ab (Größe der Datei, Anzahl der Werte, Datenstruktur)
Gruß Daniel
Anzeige
AW: XVerweis vs. XLookup
20.01.2021 18:43:24
Kay
Hallo Daniel,
Danke für die klare Antwort, auch wenn sie mich nun wieder zum Umdenken anregt.
Da XVerweis sehr schnell, er löst rd. 300 Formeln auf mit verschiedenen Suchparametern in verschiedenen Dateien in nicht groß wahrnehmbarer Zeit auf.
Wenn ich das per VBA mache, muss ich die Dateien jeweils öffnen, dann suchen und wieder schließen.
Ich werde wahrscheinlich per VBA die XVerweis Funktion in die einzelnen Zellen kopieren (komplexes Blatt und kaum Tabellenstruktur), da sich die Quelldatei und der Suchalgorithmus selten ändern - rein der Suchtext ist dynamisch.
Verstehe nur noch so ganz, warum eine Application.WorksheetFunction Aufruf eben so anders ist, als die Funktion im Tabellenblatt.
Trotzdem Danke
Kay
Anzeige
AW: XVerweis vs. XLookup
20.01.2021 18:55:35
Daniel
Naja, VBA ist nicht der Excelformelinterpreter.
Manche Dinge die ähnlich aussehen, sind in VBA anders programmiert als in Excel.
Das muss man akzeptieren.
Du imporierst dir hier die Funktion von Excel nach VBA, aber eben nur die einzelne Funktion und nicht die komplette Logik der Formelinterpretation.
Dh die Bereitstellung der einzelnen Parameter ist reines VBA und gehorcht dessen Gesetzmäßigkeit.
Man kann beispielsweise über Worksheetfunction auch keine Matrixformelen erstellen und berechnen lassen.
In VBA muss man die Schleifen selber programmieren.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge