Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Arrayformel in Makro ausführen

Arrayformel in Makro ausführen
30.01.2020 21:59:53
christian
Hallo,
Ich habe eine Datenbank angelegt und möchte nun über ein Makro bestimmte Werte aus der Datenbank abrufen.
einzelne Werte kann ich über SVerweis problemlos abrufen.
If Range("C1").Value = "MDA" Then Range("C17").FormulaLocal = "=SVERWEIS(C3;mda!F:H;3;FALSCH)"
Nun möchte ich, wenn mehrere Einträge zu einem bestimmten Suchergebnisse existieren, dass diese auch alle ausgegeben werden.
mit dieser Formel klappt das auch super:
=WENNFEHLER(INDEX(mda!$G$2:$G$99999;KGRÖSSTE((mda!$F$2:$F$99999=Abfrage_Erweitert!$C$3) *(ZEILE($F$2:$F$99999)-1);ZÄHLENWENN(mda!$F$2:$FA$99999;Abfrage_Erweitert!$C$3)+1-ZEILE(F1)));"")
Wenn ich dies nun aber in mein Makro einbaue bekomme ich einen Laufzeitfehler 428.
im Makro sieht das im Moment so aus:
If Range("C1").Value = "MDA" Then Range("B17").Selection.FormulaArray = _
"=WENNFEHLER(INDEX(mda!$G$2:$G$6000;KGRÖSSTE((mda!$F$2:$F$6000=Abfrage_Erweitert!$C$3)*(ZEILE($F$2:$F$6000)-1);ZÄHLENWENN(mda!$F$2:$FA$6000;Abfrage_Erweitert!$C$3)+1-ZEILE(F1)));"")"
Wie bekomme ich das Makro ohne Fehler zum laufen?
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 22:20:58
onur
Du musst die Formel in Englisch eingeben.
Am besten manuell eingeben und per VBA im Debugfenster ausdrucken lassen (oder im Lokalfenster anschauen).
Oder Makrorecorder einschalten und die Formel manuell eingeben und später anschauen.
In beiden Fällen erhältst du die engl. Formel.
AW: Arrayformel in Makro ausführen
30.01.2020 22:37:05
christian
Ich habe die Formel nun in Englisch eingegeben:
If Range("C1").Value = "MDA" Then Range("B17").Selection.FormulaArray = _
"=IFERROR(INDEX(mda!$G$2:$G$99999;LARGE((mda!$F$2:$F$99999=Abfrage_Erweitert!$C$3)*(ROW($F$2:$F$99999)-1);COUNTIF(mda!$F$2:$FA$99999;Abfrage_Erweitert!$C$3)+1-ROW(G1)));"")"
einen Laufzeitfehler438 bekomme ich leider immer noch.
Ich habe es auch mit Makro aufzeichnen versucht und die aufgezeichnete Formel eingesetzt leider mit dem selben Ergebnis. Auf meinem Arbeitsblatt funktioniert die Formel in Deutsch aber in Englisch nicht.
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 22:42:33
Daniel
englisch heißt, nicht nur englische Funktionsnamen, sondern auch das Komma als Parametertrennzeichen und bei Dezimal zahlen den Punkt als Dezimalzeichen.
außerdem, das .Selection. zwischen .Range() und .FormulaArray gehört da nicht hin!
Gruß Daniel
AW: Arrayformel in Makro ausführen
30.01.2020 22:46:41
onur
Ich habe dir doch 2 Tips gegeben, wie du es machen kannst.
Hättest du dich dran gehalten, wärst du längst fertig.
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 22:39:41
Daniel
noch ein weiterer Hinweis:
Anführungszeichen, die zur Formel gehören, müssen in VBA immer doppelt eingegben werden.
an dieser Verdopplung kann sie dann der Interpreter von den Anführungszeichen unterscheiden, die den Formeltext begrenzen.
dh am Ende, wenn du den Leerstring in der Formel hast muss dann so aussehen:
Selection.FormulaArray = "=....);"""")"
Gruß Daniel
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 23:04:35
christian
Super jetzt funktioniert es. :D
Leider merke ich nun das das Ergebnis das gleiche ist wie bei meine SVerweis Formel.
Ich habe in meiner Datenbank zum testen 3 Einträge mit dem Namen Test und der Beschreibung test1, test2 und test3 angelegt.
Auf dem Arbeitsblatt ausgeführt gibt mir die Arryformel alle 3 Ergebnisse wieder.
Also in Zelle C17 test1 in C18 test2 und in C19 test3.
Über das Makro gibt er mir nur test1 in Zelle C17 wieder
Die anderen beiden Ergebnisse leider nicht.
Wie bekomme ich das hin?
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 23:07:14
onur
EINE Zelle kann ja auch nur EINEN Wert ausgeben.
Du solltest die Formel ja auch runterkopieren und nicht nur in B17 eintragen.
AW: Arrayformel in Makro ausführen
30.01.2020 23:31:45
christian
Wenn ich die Formel runter kopiere funktioniert das auch.
Ich habe das Makro auf einen Commandbutton gelegt Sodas ich im Feld C3 einen Wert eingebe, in dem Fall test, Wenn dann der Button gedrückt wird sollen ab Zeile C17 alle Ergebnisse die zu zu diesem Wert , hier test, gefunden werden angezeigt werden sollen.
Anzeige
AW: Arrayformel in Makro ausführen
30.01.2020 23:33:14
christian
Sry für den tollen Satzbau und das schlechte Deutsch XD
AW: Arrayformel in Makro ausführen
30.01.2020 23:42:50
christian
Ok habe das Problem gelöst vielen Dank :D
AW: Arrayformel in Makro ausführen
30.01.2020 23:42:55
onur
Wo ist nun das Problem?
Ich habe doch geschrieben, was du machen musst
Anzeige
AW: Arrayformel in Makro ausführen
31.01.2020 00:02:26
christian
Ja ich habe es jetzt so hinbekommen wie ich das wollte.
habe nach der formel noch dieses eingefügt und jetzt klappt es.
.AutoFill Destination:=Range("B17:B5000")
Vielen Dank
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige