Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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
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?

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.
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?
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.
Anzeige
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.
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
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
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige