Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
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
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Performanceproblem mit dieser Formel

Performanceproblem mit dieser Formel
25.09.2007 15:04:00
Ralf
Hallo liebe Excel-Gemeinde,
ich greife innerhalb einer Datei mit Hilfe dieser Formeln auf insgesamt 4 Quartalsdateien (Q1, Q2, Q3 und Q4) zu:
Formel 1
=INDEX('M:\Aktuell\[Reporting 2007 - Gesamt - Q1.xls]Ist (Jan) '!$M$16:$FM$2300;VERGLEICH($AC23; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q1.xls]Ist (Jan) '!$FR$16:$FR$2300;0);VERGLEICH($X$2; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q1.xls]Ist (Jan) '!$M$16:$FM$16;0))
Formel 2
=INDEX('M:\Aktuell\[Reporting 2007 - Gesamt - Q2.xls]Ist (Apr) '!$M$16:$FM$2300;VERGLEICH($AC23; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q2.xls]Ist (Apr) '!$FR$16:$FR$2300;0);VERGLEICH($X$2; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q2.xls]Ist (Apr) '!$M$16:$FM$16;0))
Formel 3
=INDEX('M:\Aktuell\[Reporting 2007 - Gesamt - Q3.xls]Ist (Jul) '!$M$16:$FM$2300;VERGLEICH($AC23; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q3.xls]Ist (Jul) '!$FR$16:$FR$2300;0);VERGLEICH($X$2; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q3.xls]Ist (Jul) '!$M$16:$FM$16;0))
Formel 4
=INDEX('M:\Aktuell\[Reporting 2007 - Gesamt - Q4.xls]Ist (Dez) '!$M$16:$FM$2300;VERGLEICH($AC23; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q4.xls]Ist (Dez) '!$FR$16:$FR$2300;0);VERGLEICH($X$2; 'M:\Aktuell\[Reporting 2007 - Gesamt - Q4.xls]Ist (Dez) '!$M$16:$FM$16;0))
Diese Formel erhöht die Größe der Datei um 10 MB.
Gibt es eine Alternative zu dieser Formel? Mit dem SVerweis ergibt sich leider das gleiche Problem.
Grüße und vielen Dank für Eure Unterstützung schon mal Vorab
Ralf

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

Betreff
Datum
Anwender
Anzeige
AW: Performanceproblem mit dieser Formel
25.09.2007 16:00:00
Wolli
Hallo Ralf, da musste ich mir erstmal ein Versuchslabor bauen ...
Deine Formel in meinem Labor nachgebaut:
=INDEX(B7:G17;VERGLEICH(B3; A7:A17;0);VERGLEICH(B2; B6:G6;0))
Meine Formel in meinem Labor:
=BEREICH.VERSCHIEBEN(A6;VERGLEICH(C3; A7:A17;0);VERGLEICH(C2; B6:G6;0);1;1)
Damit greifst Du direkt auf die gewünschte Zelle zu und musst nicht den ganzen, gigantischen Bereich ansprechen. Ich könnte mir vorstellen, dass das was bringt.
Hier mein Labor: https://www.herber.de/bbs/user/46328.xls
Gruß, Wolli

Anzeige
AW: Performanceproblem mit dieser Formel
25.09.2007 16:31:00
Ralf
Hallo Wolli,
zunächst mal vielen Dank.
Bei Deiner Formel ist es denk ich wichtig, dass die Spalten und Zeilen direkt an das Feld 'A6' anknüpfen.
In meinen Q-Tabellen habe ich allerdings die Spaltenbereiche M:FM und die Daten für den Zeilenvergleich stehen erst in Spalte FR.
Oder sehe ich das falsch?
Gruß Ralf

AW: Performanceproblem mit dieser Formel
25.09.2007 16:48:35
Wolli
Hallo Ralf, für BEREICH.VERSCHIEBEN ist nur die Angabe der oberen linken Zelle notwendig. In meinem Fall habe ich die Zelle links über dem Bereich angegeben.
Dein Bezug ist
'M:\Aktuell\[Reporting 2007 - Gesamt - Q1.xls]Ist (Jan) '!$M$16:$FM$2300
Für Dich heißt es dann also
'M:\Aktuell\[Reporting 2007 - Gesamt - Q1.xls]Ist (Jan) '!$L$15
das ist links über dem Bereich.
(Alternativ hätte es auch
=BEREICH.VERSCHIEBEN(B7;VERGLEICH(C3; A7:A17;0)-1;VERGLEICH(C2; B6:G6;0)-1;1;1)
lauten können.)
Gruß, Wolli

Anzeige
AW: Performanceproblem mit dieser Formel
26.09.2007 09:14:00
u1783
Hallo Wolli,
mit diesem Hinweis hab ich die Formel korrekt abbilden können.
Allerdings ergibt sich nun ein anderes Problem: Wenn ich z.b. die Q1-Datei öffne, werden für dieses Quartal die richtigen Werte angezeigt. Mache ich die Q1-Datei wieder zu und öffne die Q2-Datei, dann werden für Q2 die richtigen Werte angezeigt. Allerdings für Q1 erfolgt die Fehlermeldung "#Wert!".
Woran mag das liegen?
Wenn ich die Datei (mit den Verknüpfungen auf die Q-Dateien) öffne und alle Verknüpfungen aktualisiere erscheint ebenfalls die Fehlermeldung "#Wert!".
Gruß, Ralf

AW: Performanceproblem mit dieser Formel
26.09.2007 13:18:00
Wolli
Hallo Ralf, es ist wie Du sagst. Ich habe dazu mal eine neue Frage aufgemacht, vielleicht kennt jemand das Problem, ich finde es hochinteressant.
Siehe: https://www.herber.de/forum/messages/910570.html
Wenn sich nichts findet, könnte man evtl. eine makrogestützte Lösung ins Auge fassen, die Stück für Stück die gewünschten Daten rauspuhlt und hart in die Zielzellen einsetzt.
Gruß, Wolli

Anzeige
AW: Performanceproblem mit dieser Formel
26.09.2007 13:42:33
u1783
Hallo zusammen,
nachdem sich die sehr schöne Lösung von Wolli leider nicht umsetzen lässt (die 4 Q-Dateien können nicht parallel geöffnet sein), sind weitere Lösungsansätze gerne gesehen.
Eine makrogestützte Lösung scheint mir aufgrund des riesigen Daten- und Dateienumfangs (4 Quartalsdateien, ca. 70 weitere Dateien, die ihre Daten aus den Q-Dateien auslesen, bei einem Zeilenumfang von 2400 Zeilen) nicht realistisch.
Gruß, Ralf

Frage ist noch offen
26.09.2007 13:44:00
u1783
Frage noch offen

AW: Performanceproblem mit dieser Formel
26.09.2007 18:32:00
Daniel
Hi
naja, gerade dann ist ein Aktualisierungs-Makro sinnvoll.
- Datei öffnen
- Daten übernehmen als Fix-Wert (keine Formel)
- Datei wieder schließen
und das solange wiederholen, bis du alle Dateien zusammen hast.
wenn du es alleine über formeln lösen willst, hast du das Problem, das quasi alles gleichzeitig berechnet und aktualisiert wird.
Beim Makro kannst du das schrittweise tun und überforderst das System nicht.
letztendlich gespeichert werden dann nur noch die Fix-Werte.
könnte zwar sein, daß das aktualisieren dann ein bisschen länger dauert, aber du hast ne Datei, mit der du dann arbeiten kannst (ich hab auch schon Makros geschrieben, die dann über nen Tag gerechnet haben, geht also problemlos(
Gruß, Daniel

Anzeige
AW: Performanceproblem mit dieser Formel
27.09.2007 09:16:00
Wolli
Ja, da muss ich Daniel zustimmen. Ich habe gestern mal ein wenig (ohne echten Erfolg) gebastelt, aber letztlich ist hier doch ein Makro sinnvoll, das dann halt auf Knopfdruck, nicht "dynamisch" die Daten echt hält. Insgesamt lässt sich nicht leugnen, dass Excel hier eindeutig überfordert ist. Derartige Datenmengen, die sich auch noch alle aufeinander beziehen, gehören eindeutig in eine Datenbank, wenn man schnelle, akkurate Ergebnisse wünscht.
Gruß, Wolli

AW: Performanceproblem mit dieser Formel
25.09.2007 22:37:00
Daniel
Hi
ich würde mal sagen, Performance-Killer Nr. 1 sind die Zellbezüge auf eine externe, geschlossene Datei.
wenn du dir die 4 Quartalsdateien in den Speicher lädst, sollte sich ohne weitere Änderung die Performance erheblich verbessern.
Die externen Zellbezüge brauchst du nicht anpassen, das geht automatisch, je nachdem, ob die Dateien geöffnet oder geschlossen sind.
wenn die Dateien nicht geöffnet werden sollen, weil andere Personen parallel damit arbeiten müssen, kannst du sie auch über ein kleines Mako schreibgeschützt öffnen, dann können andere mit dieser Datei normal arbeiten:

Workbooks.open "M:\Aktuell\[Reporting 2007 - Gesamt - Q4.xls", ReadOnly:=True


Zweiter Perfomance-Killer in Bezug auf Verarbeitungsgeschwindigkeit ist die VERGLEICHS-FUNKTION mit 3. Parameter = 0.
Besser wäre es hier, die Variante mit 3. Parameter = 1 zu verwenden, die wesentlich schneller ist.
das geht aber nur unter folgenden Voraussetungen:
- der Suchvektor (2. Parameter der Vergleichsfunktion) ist aufsteigend sortiert, das ist ZWINGEND erforderlich
- der Suchbegriff muss im Suchvektor vorhanden sein, ist er es nicht, erfolgt KEINE Fehlermeldung, sondern es wird der nächstkleiner Wert genommen

im Bedarfsfall muss eben mit einer WENN-Funktion geprüft werden, ob der gefundene Wert mit dem Suchwert übereinstimmt (bei einem SVERWEIS mache ich als Prüfung den SVERWEIS auf die Spalte 1, dann muss der gefundene Wert mit dem Suchwert übereinstimmen)
das gibt dann zwar lange Formeln, aber die sind idR immer noch schneller als die Variante mit 3. Parameter = 0
Warum ist die Variante mit 3. Parameter = 1 schneller?
das liegt an den sortierten Daten.
bei unsortierten Daten muss jeder Wert geprüft werden, bis ein Treffer gefunden wird. Das sind bei dir zwischen 1 und 2300 Vergleiche pro Rechenoperation (im Mittel also 1150, und das dann noch auf eine externe Datei)
bei sortierten Daten kann ein wesentlich effizienterer Suchalgorythmus verwendet werden, der bei deiner Datenmenge spätestens nach 13 Vergleichen am Ziel sein sollte.
Gruß, Daniel

Anzeige
AW: noch ne Anmerkung
26.09.2007 00:40:01
Daniel
Hi
nochwas gibt es bei der Vergleichsfuntkion zu beachten, und zwar wenn im Suchverktor der Suchbegriff mehrfach vorkommt:
bei 3. Parameter = 0 wird als ergebnis der erste gefundene Wert zurückgegben (dh. die kleinste Zeilen-Nr)
bei 3. Parameter = 1 wird als Ergebnis der letzte gefundene Wert zurückgegeben (dh. die grösste Zeilen-Nr)
Gruß, Daniel

AW: noch ne Anmerkung
26.09.2007 09:11:00
u1783
Hallo Daniel.
vielen Dank für Deine ausführlichen Erläuterungen.
Wenn es so einfach wäre alle 4 Quartalsdateien zu öffnen. Das packt Excel leider nicht.
Den Parameter auf 1 zu setzen ist nicht das Problem. Alle Daten sind in sortierter Reihenfolge vorhanden. Danke für diesen Tip.
Gruß, Ralf
Anzeige

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige