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

Forumthread: Datei sehr langsam wegen matrixformeln

Datei sehr langsam wegen matrixformeln
17.09.2015 17:11:51
Spenski
https://www.herber.de/bbs/user/100249.xlsx
Hallo
Ich möchte im Tabellenblatt SL in B1 eine Schnittlistennummer eingeben.
BSP: 358090
In F35:Y58 sollen dann alle Daten auftauchen die es zu dieser Schnittliste gibt.
Quelle ist Tabellenblatt DATEN
In meiner gochgeladenen Datei Funktionierts zwar wie ich es haben möchte, allerdings ist die Geschwindigkeit sehr Mangelhaft durch die ganzen Matrixformeln.
Hat da jemand evtl eine Idee? gerne auch VBA. DANKE fürs lesen
mfg
Christian

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datei sehr langsam wegen matrixformeln
17.09.2015 18:44:21
Daniel
Hi
die Formeln in einer Zeile verwenden alle die gleiche Zeilennummer.
lagere daher den Formelteil zum berechnen der Zeilennummer in eine Hilfsspalte aus (z.B. Spalte Z), dann kannst du in den Restlichen Spalten mit der einfachen Index-Funktion arbeiten, ohne das jedesmal aufwendig die Zeile berechnet werden muss.
Beispiel:
in Zelle Z35:
{=KGRÖSSTE((Daten!$E:$E=SL!$B$1)*ZEILE(Daten!$E:$E);ZÄHLENWENN(Daten!$E:$E;SL!$B$1)+1-ZEILE(B1)) }

in den restlichen Spalten (F-Y) dann (hier für F)
=wenn(istfehler(Z35);"";INDEX(Daten!F:F;Z35))

weil der Hauptaufwand der matrixformel in der Berechnung der Zeilennummer steckt, sollte dies den Rechenaufwand um den Faktor 20 reduzieren.
Gruß Daniel

Anzeige
AW: Datei sehr langsam wegen matrixformeln
17.09.2015 19:05:16
Spenski
wow super ..und ein 20faches ist noch untertrieben :D
Dank dir Daniel

;
Anzeige
Anzeige

Infobox / Tutorial

Datei sehr langsam wegen Matrixformeln optimieren


Schritt-für-Schritt-Anleitung

Um die Geschwindigkeit Deiner Excel-Datei, die durch Matrixformeln extrem langsam reagiert, zu optimieren, kannst Du die folgenden Schritte befolgen:

  1. Hilfsspalte einfügen: Füge eine neue Hilfsspalte (z.B. Spalte Z) ein, um die Berechnung der Zeilennummer auszulagern.

  2. Matrixformel anpassen: Verwende in der Hilfsspalte die Matrixformel zum Berechnen der Zeilennummer. Zum Beispiel in Zelle Z35:

    {=KGRÖSSTE((Daten!$E:$E=SL!$B$1)*ZEILE(Daten!$E:$E);ZÄHLENWENN(Daten!$E:$E;SL!$B$1)+1-ZEILE(B1))}
  3. Index-Funktion verwenden: In den Spalten F bis Y kannst Du dann die einfache Index-Funktion verwenden. Für Zelle F35 könnte das so aussehen:

    =WENN(ISTFEHLER(Z35);"";INDEX(Daten!F:F;Z35))
  4. Leistungsüberprüfung: Überprüfe die Geschwindigkeit der Datei. Du solltest eine deutliche Verbesserung feststellen, da der Hauptaufwand der Matrixformel nun reduziert wurde.


Häufige Fehler und Lösungen

  • Fehler: Excel reagiert sehr langsam beim Öffnen der Datei.

    • Lösung: Überprüfe, ob viele Matrixformeln in der Datei verwendet werden. Das Auslagern der Berechnungen in Hilfsspalten kann hier Abhilfe schaffen.
  • Fehler: Die Daten werden nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass die Zellbezüge in der Hilfsspalte korrekt sind und dass die Datenquelle nicht verändert wurde.

Alternative Methoden

Falls Du keine Matrixformeln verwenden möchtest, gibt es auch alternative Methoden, um Deine Excel-Datei zu optimieren:

  • VBA-Makros: Du kannst ein simples Makro erstellen, das die benötigten Daten abruft und anzeigt, ohne auf komplexe Formeln zurückgreifen zu müssen.

  • Pivot-Tabellen: Verwende Pivot-Tabellen, um Daten zu filtern und zu aggregieren, ohne die Performance von Excel negativ zu beeinflussen.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die oben beschriebenen Methoden zu veranschaulichen:

  1. Beispiel für Hilfsspalte:

    • Angenommen, Du hast eine Liste von Produkten in Daten!E:E und möchtest alle Produkte zu einer bestimmten Schnittlistennummer in SL!B1 anzeigen. Mit der Hilfsspalte reduzierst Du die Berechnungen und somit die Ladezeit der Datei.
  2. Beispiel für VBA:

    Sub DatenAbrufen()
       Dim schnittListe As String
       schnittListe = Sheets("SL").Range("B1").Value
       ' Füge hier den Code hinzu, um die Daten basierend auf schnittListe zu filtern
    End Sub

Tipps für Profis

  • Verwende Named Ranges: Benutze benannte Bereiche, um die Lesbarkeit Deiner Formeln zu verbessern und die Komplexität zu reduzieren.

  • Vermeide volatile Funktionen: Funktionen wie INDIREKT() oder JETZT() können die Leistung beeinträchtigen. Reduziere deren Einsatz, wenn möglich.

  • Reduziere die Datenmenge: Filtere Deine Daten so, dass nur relevante Informationen angezeigt werden, um die Berechnungszeit zu minimieren.


FAQ: Häufige Fragen

1. Warum ist meine Excel-Datei so extrem langsam? Die Verwendung von zu vielen Matrixformeln kann die Geschwindigkeit von Excel stark beeinträchtigen. Das Auslagern von Berechnungen in Hilfsspalten kann helfen.

2. Wie kann ich die Leistung von Excel verbessern? Verwende Hilfsspalten, reduziere die Anzahl von Matrixformeln und ziehe in Betracht, VBA-Makros oder Pivot-Tabellen zu verwenden, um die Leistung zu steigern.

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