Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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

Verweis-Funktion in VBA

Verweis-Funktion in VBA
27.01.2021 18:21:53
Andl
Liebe VBA'ler
vll. könnt ihr mir helfen:
Habe folgende Formel - welche auch funktioniert:
VERWEIS(9;1/(B4:B31="Stand Abschlag");(C4:C31))
Nun würde ich diese gerne als VBA haben - komme aber nicht zurecht - bekomme hier eine Fehlermeldung Laufzeitfehler 13
RestAbschlag221 = Application.WorksheetFunction.Lookup(9, 1 / Tabelle14.Range("B4:B31") = "Stand Abschlag", Tabelle14.Range("C4:C31"))
Ideen?
Beste Grüße
Andl

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Verwende stattdessen die vbFkt Evaluate ...
27.01.2021 18:33:09
Luc:-?
…und den US-Original-FmlText, Andl,
denn in VBA fehlt den Xl-Fktt im WorksheetFunction-Container die Unterstützung durch den Xl-FmlText-Interpreter, der ggf Bereichsargumente, die die Xl-Fkt als EinzelWerte verlangt, entsprd variiert. In deiner Fml kommt hinzu, dass hier ein skalarer Wert durch die Werte eines Bereichs, also ein Array geteilt wdn soll, was die VBA-Syntax nicht erlaubt.
Gruß, Luc :-?
AW: Verwende stattdessen die vbFkt Evaluate ...
27.01.2021 18:55:04
Andl
Wo setze ich das Evaluate? Vor das Lookup? Kenne die Funktion nicht
Evaluate(Lookup(9, 1 / Tabelle14.Range("B4:B31") = "Stand Abschlag", Tabelle14.Range("C4:C31")))
Andere Ideen?
Anzeige
Die Fml muss Text sein, ...
27.01.2021 19:21:44
Luc:-?
…Andl:
… = ActiveSheet.Evaluate("Lookup(9,1/(Tabelle14!B4:B31=""Stand Abschlag""),Tabelle14!C4:C31)")
Ansonsten entspricht die vbFkt Evaluate im Prinzip der alten XLM-Fkt AUSWERTEN (dt Fml-Notation!), die nur noch in benannten Fmln (definierter Name!) verwendet wdn kann und dann ebenfalls eine Speicherung als .xlsm/b erfordert, damit die alten MakroBlätter hinzugefügt wdn. Und die vbFkt findet man in der VBE-Hilfe! Sie existiert als Methode von Application und Worksheet, wobei erstere doppelt so oft für ein Ergebnis aufgerufen wird wie die letztere Variante. Mögliches Weglassen von Application. bedeutet immer die erstere, berechnungsaufwendigere allgemeine Variante!
Luc :-?
Anzeige
AW: Verwende stattdessen die vbFkt Evaluate ...
27.01.2021 19:31:35
Daniel
Hi
Das Problem ist, hier liegt eine Matrixformel vor, die in einer Schleife berechnet werden muss.
Eine Excelformel in einer Zelle kann die Schleife automatisch bilden und die Formel berechnen, VBA kann das nicht automatisch, in VBA müsste man hier zur Berechnung des Ergebnisses eine For-Next-Schleife selber programmieren.
Wenn man dass vermeiden will, kann man sich von Evaluate die Formel berechnen lassen. Evaluate simuliert die Excelzelle in VBA.
Dazu muss man den Formel als Textstring so schreiben, wie sie in einem Englischen Excel in einer Zelle stehen würde, bzw so, wie wenn man mit .Formula die Formel in eine Zelle schreiben würde:
Also im Prinzip so:
ErgebnisVariable = Evaluate("Lookup(9,1/Tabelle14!B4:B31=""Stand Abschlag"",Tabelle14!C4:C31)"
Als Tabellblattname musst du die Bezeichnung auf dem Reiter verwenden.
Gruß Daniel
Anzeige
AW: Verwende stattdessen die vbFkt Evaluate ...
01.02.2021 17:07:18
Andl
Hallo Daniel und Luc,
vielen Dank hierfür - mit "Evaluate" hat das gut geklappt.
Besten Dank!
Andreas Schaible

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige