Geschwindigkeit bei Matrixformeln

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Geschwindigkeit bei Matrixformeln
von: P-Quest :-)
Geschrieben am: 23.07.2015 15:05:23

Hallo,
ich habe in einer Arbeitsmappe 2 Tabellen mit je ca. 200 Datensätzen.
In Tabelle Stammdaten verwende ich folgende Matrixformel:
{=WENN(MAX(WENN((EinAus!$A:$A=A6);EinAus!$C:$C))=0;"";MAX(WENN((EinAus!$A:$A=A6);EinAus!$C:$C)))}
Mit Hilfe der Formel hole ich mir aus Tabelle EinAus das Datum der letzten Buchung für jeden Artikel in Tabelle Stammdaten. Bei Artikeln, für die noch keine Buchung vorliegt, bleibt das Feld leer.
Das klappt auch - allerdings nur mit erheblichen Zeiteinbußen. Gebe ich eine Buchung per Userform ein, dauert es nach dem Klick auf speichern (im Userform) einige Sekunden bis sich das Userform schliesst. Man könnte schon den Eindruck bekommen, der Rechner sei abgestürzt.
Ein Abschalten der automatischen Berechnung während der Ausführung des Makros bringt nur eine kleine Zeitersparnis.
Die Berechnungen grundsätzlich auf manuell zu stellen scheidet aus, da die Anwender auch in der Tabelle direkt, also ohne Nutzung der Userforms, Änderungen vornehmen können. Sie müssten also ständig darauf achten, dass sie die Berechnungen aktualisieren.
Ich stelle meine Frage mal ganz allgemein:
Hat jemand eine Idee, wie ich, unter Berücksichtigung der o.g. Rahmenbedingungen, mein Problem lösen bzw. meine Berechnungen beschleunigen könnte?
Für Vorschläge und Fragen bin ich jederzeit erreichbar :-)
Gruß,
Peter

Bild

Betrifft: AW: Geschwindigkeit bei Matrixformeln
von: Rudi Maintaire
Geschrieben am: 23.07.2015 15:10:43
Hallo,
du solltest die Formel auf den relevanten Bereich beschränken und nicht ganze Spalten auswerten.
Evtl. dyn. Namen verwenden.
Gruß
Rudi

Bild

Betrifft: AW: Geschwindigkeit bei Matrixformeln
von: P-Quest :-)
Geschrieben am: 23.07.2015 15:54:21
Danke für den Hinweis! Werde es anpassen.

Bild

Betrifft: richtige Feststellungen doch ...
von: der neopa C
Geschrieben am: 23.07.2015 15:17:11
Hallo Peter,
... meine hilft Dir da nicht weiter. Aber sicherlich folgendes:
- Es bedarf keine (echten) Matrixformel um das von gewünschte zu ermitteln
- Bei Matrixformeln oder Formeln mit Matrixfunktionalitäten nie über den gesamten Zeilenbereich auswerten sondern nur über den maximalst notwendigen Datenbereich.
- Du brauchst keine WENN()-Formelklammerung wenn Du einen Ergebniswert 0 mittels benutzerdefinieretn Zahlenformat ausblendest un die innere WENN() benötigt MAX() hier auch nicht.
Da Du XL2010 im Einsatz hast kannst Du hier eine AGGREGAT()-Formel in seiner MATRIXversion nutzen.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: richtige Feststellungen doch ...
von: P-Quest :-)
Geschrieben am: 23.07.2015 15:53:46
Danke für die Tipps.
Ich arbeite mit, wie sie so schön genannt werden, "intelligenten" Tabellen. Damit sollte die Bereichsverkleinerung möglich sein.
Die Aggregat-Fktn. habe ich noch nie benutzt. Mein erster Versuch endete damit, dass für alle Werte das gleich Datum angezeigt wurde.
=AGGREGAT(4;6;Bewegungen[Datum])
ist natürlich Blödsinn, weil ich hier kein Suchkriterium angegeben habe. Allerdings habe ich keinen blassen Schimmer, wie ich das machen muss.
Hättest du einen Hinweis, wie ich richtig vorgehen muss?
Gruß,
Peter

Bild

Betrifft: AW: richtige Feststellungen doch ...
von: P-Quest :-)
Geschrieben am: 23.07.2015 16:11:56
ups...Häkchen vergessen

Bild

Betrifft: dazu ein AGGREGAT()-Formel-Beispiel ...
von: der neopa C
Geschrieben am: 23.07.2015 16:13:02
Hallo Peter,
... welches sowohl Deinen letzte Angaben und Deiner Erstformelangabe weitestgehend entspricht.
Nachfolgend ist als Tabelle "Bewegungen" der Bereich B2:B9 definiert:

 ABCDE
1    Datum
2 DatumWert 09.07.15
3 05.07.151250,00 Größter Wert
4 07.07.15  999,00
5 09.07.15450,00  
6 09.07.15999,00  
7 09.07.15777,00  
8 11.07.151535,00  
9     

Formeln der Tabelle
ZelleFormel
E4=AGGREGAT(14;6;Bewegungen[Wert]/(Bewegungen[Datum]=E2); 1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Bild

Betrifft: AW: dazu ein AGGREGAT()-Formel-Beispiel ...
von: P-Quest :-)
Geschrieben am: 23.07.2015 16:40:11
Hallo Werner,
es hat zwar 2 Anläufe gebraucht, aber dein Ansatz hat mich dann doch in die Lage versetzt, der Zeitvergeudung meiner Matrixversion die Stirn zu bieten. Keine Berechnungsgedenksekunden mehr.
Danke!

Bild

Betrifft: freut mich auch owT
von: der neopa C
Geschrieben am: 23.07.2015 17:01:59
Gruß Werner
.. , - ...

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Geschwindigkeit bei Matrixformeln"