Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1624to1628
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

Formel in Makro übertragen

Formel in Makro übertragen
23.05.2018 16:45:13
Oliver
Liebes Forum,
ich habe eine sehr umfangreiche Excel-Lösung gebastelt. Aus vier Reitern ziehe ich mir unterschiedliche Daten in ein Blatt. Dazu habe ich eine Reihe an Formeln verwendet u. a. die nachfolgende Matrixformel.
Leider ist die Excel nun unglaublich langsam. Die automatische Berechnung habe ich bereits deaktiviert. Aber jeder Speichervorgang benötigt gute 5 Minuten.
Daher möchte ich gerne die nachfolgende Formel, die ich in den Zellen L11:AA528 verwende als Makro einsetzen. In der Hoffnung, dass sich dadurch die Performance der Excel wieder deutlich verbessert:
=WENNFEHLER(SVERWEIS($C11;WENN(###_XYZ!$A:$A=L$9;###_XYZ!$H:$I;"");2;FALSCH);"")
Mit der Formel prüfe ich zunächst, ob die ID aus C11 in Matrix H:I des Reiters ###_XYZ vorkommt. Aber nur, wenn das Kürzel aus L9 auch in der entsprechenden Zeile der Matrix vorkommt. Ausgegeben wird dann ein Zahlenwert aus Spalte I - ich hoffe das war halbwegs nachvollziehbar formuliert.
Ich würde mich freuen, wenn mir jemand einen Tipp geben kann, wie/ob ich das mit Makros umsetzen kann. Oder einen weiteren Hinweis zur Verbesserung der Performance der Exel geben kann.
Besten Dank
Oliver

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Die Formeln sind nicht das Problem
23.05.2018 17:18:17
mmat
Hallo Oliver,
das ist unheimlich logisch. Du hast die Berechnung deaktiviert, dass ding ist immer noch lahm und nun suchst die Lösung für den Problem in der Optimierung der Berechnung ?
Wie groß in Kilobyte ist deine Datei ?
AW: Die Formeln sind nicht das Problem
23.05.2018 17:30:59
Oliver
Hi mmat,
die Datei hat eine Größe von 325 kb. Mit deaktivierter Berechnung ist die Datei lediglich bei der Speicherung langsam. Während der Bearbeitung habe ich keine Probleme. Zudem ist der Performance Einbruch erst nach dem Einfügen der genannten Matrixformel aufgetreten. Somit vermute ich weiterhin, dass es an der wenig performanten Formel liegt.
Sollten weitere Faktoren eine Rolle spielen, dann freue ich mich über einen Hinweis, dem ich nachgehen kann.
Besten Dank
Oliver
Anzeige
Ok, mein Verdacht hat sich nicht bestätigt
24.05.2018 09:37:30
mmat
Hallo Oliver,
ich hatte da so einen Verdacht. Es gibt in Excel ein Problem, das zu riesigen Dateien führt (25MB und mehr), was sich natürlich negativ auf die Performance beim speichern auswirkt. Das scheint bei dir nicht der Fall zu sein.
Es gibt da einen Haken (Optionen->Formeln), das beim speichern nochmal gerechnet werden soll.
Ansonsten glaub ich nicht, dass sich eine Überführung der Formeln in ein Makro in der Regel eine Performanceverbesserung erreichen läßt. Daniel hat da einen Tip gegeben, den man prüfen sollte.
AW: Formel in Makro übertragen
23.05.2018 17:26:57
onur
Abgesehen von deinem Problem mit der Formel:
Das, was du mit "Reiter" meinst, sind Tabellenblätter - Reiter sibd die lustigen kleinen Felder unten mit den Tabellennamen, die du anklicken kannst.
Das ist KEINE Matrixformel, DIE fangen immer mit "{" an und hören mit "}" auf.
Mir deiner Formel habe ich auch auf den ersten Blick meine Probleme, aber damit müssen sich Andere beschäftigen.
Anzeige
AW: Formel in Makro übertragen
23.05.2018 17:37:03
Oliver
Hi Onur,
besten Dank für den Hinweis. Du hast recht, ich beziehe mich da auf Tabellenblätter und nicht Reiter.
Die Formel ist bei mir aber tatsächlich eine Matrixformel - meines Wissens funktioniert die Verschachtelung des SVERWEIS mit der WENN-Formel nur, wenn es eine Matrixformel ist. Ich habe lediglich in meinem ersten Post die {} vergessen. Hier die Originalformel aus meinem Tabellenblatt:
{=WENNFEHLER(SVERWEIS($C11;WENN(###_XYZ!$A:$A=L$9;###_XYZ!$H:$I;"");2;FALSCH);"")}
Der erste Teil der Formel (=WENNFEHLER[...]) dient lediglich dazu, dass kein #NF in den nicht zutreffenden Zellen erscheint.
Besten Dank
Oliver
Anzeige
AW: Formel in Makro übertragen
23.05.2018 18:23:24
Luschi
Hallo Oliver,
das Ersetzen der Matrixformeln durch Vba ist doch illusorisch, denn dann müßte man ja den SVERWEIS() und die ganzen Nebenbedingungen (WENN(), WENNFEHLER()) nachprogrammieren mit der sehr langsamem
Vba-Script-Sprache, wo zur Laufzeit jede Programmzeile noch in Maschinensprache compiliert werden muß.
In Matrixformeln haben solche Bereichsangaben:
- ###_XYZ!$A:A bzw.
- ###_XYZ!$H:$I)
- also ganze Spalten ohne Zeilenbegrenzung
nichts zu suchen. Grenze diese Spaltenbereiche auf das nötige Maß ein und benutze definierte Namen für diese Bereichsangaben.
Außerdem würde ich die letzte belegte Zelle in jeder Zeile & Spalte überprüfen. Oft stehen in Zellen Leerzeichen, obwohl sie eigentlich leer sein sollten, und wenn das viele sind, verlangsamen sie die Berechnung noch zusätzlich.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Formel in Makro übertragen
25.05.2018 10:18:24
Oliver
Besten Dank!
Die beiden letzten Kommentare waren die Lösung für mein Problem. Durch die Eingrenzung des Zellbereichs läuft die Datei nun wieder rund.
Vielen Dank für die vielen Tipps und die schnelle Hilfe!
AW: Formel in Makro übertragen
23.05.2018 17:59:20
Daniel
HI
ich finde die Formel auch seltsam, aber wenn sie funktionert, warum nicht.
generell sollte man bei Matrixformeln die Zellbezüge, die die Matrix bilden, immer so genau wie möglich angeben.
Excel rechnet nämlich alle angegeben Zellen durch, und wenn du eine ganze Spalte angibst (A:A) sind das sehr viele Berechnungen (1,04 Mio)
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige