ich habe mir in Excel eine extrem umfangreiche Kundenumsatztabelle aufgebaut aus der ich unzählige statistische Werte und Analysen entnehmen kann und auch übersichtlich die Umsätze aller Kunden auf Monatsbasis angezeigt bekomme. Nun ist es jedoch so, dass aufgrund des immensen Datenvolumens die Berechnung über meine Summewenns Formeln extrem langwierig sein kann. Die vollständige neu- Berechnung meiner Excel Tabelle dauert zwischen 30-120 Sekunden.
Es wäre super wenn Ihr einen Optimierungsvorschlag für mich hättet, ich beschreibe nun mal im Folgenden wie die ganze Datei aufgebaut ist, ein Beispiel kann ich leider nicht hochladen. Durch meine ausführliche Beschreibung sollte aber alles leicht verständlich werden:
In meiner Excel Datei gibt es ein Tabellenblatt Datenbasis. In diesem werden alle notwendigen Daten zur Umsatzanalyse via SQL Skript aus einer externen Datenbank herangezogen und in diesem Tabellenblatt der Reihe aufgelistet.
Das Tabellenblatt sieht in etwa so aus:
Spalte A: Kunden ID
Spalte B: Kunde
Spalte C: Kundenbetreuer
Spalte D: Jahr
Spalte E: Monat
Spalte T: Artikel
Spalte M: Umsatz1
Spalte L: Stückzahl
Spalte R: Umsatz 2
Spalte S: Umsatz 3
Nun habe ich in diesem Tabellenblatt ca. 80 120.000 (tausend!) Zeilen an Daten.
Die Umsätze ziehe ich im Tabellenblatt Umsatzübersicht über folgende Formel heran:
SUMMEWENNS(INDEX(Datenbasis!$A:$S;;WAHL($B$5;;13;12;18;19));
Datenbasis!$A:$A;INDEX(Datensammlungen!$Y:$Y;ZEILE(A6)/6+2);
Datenbasis!$H:$H;$B$10;Datenbasis!$G:$G;C$26)))
Hier muss man noch anmerken, dass im Tabellenblatt Datensammlungen eine Auflistung aller Kunden mit Angabe der jeweiligen ID erfolgt, daher wird in der Summewenns Funktion dieses Tabellenblatt auch noch aufgeführt.
Das ist aber nicht das entscheidende, eine Idee zur Optimierung der Tabelle hätte ich, wenn wir folgendes Verhalten optimieren könnten:
Die Daten die im Tabellenblatt Datenbasis aufgeführt werden führen jeden einzelnen Verkauf einzeln auf. Das bedeutet, dass zum Beispiel in einem Monat beim Kunden Kunde ABC mit der Kunden ID ABC über 1.000 Datensätze angezeigt werden, nämlich jedes einzelne Produkt und die dazugehörigen Umsätze. Ich brauche aber nur die Summe zu diesem Kunden für den betroffenen Monat. Gibt es eine Möglichkeit, dass ich ein VBA Makro erstelle, das mir alle Umsätze eines Kunden auf monatsebene zusammenfasst? Zum Beispiel so, dass mir im Monat Mai 2013 zum Kunden Kunde ABC mit der Kunden ID ABC nur noch eine Zeile mit dessen Gesamtwerten aus diesem Monat vorliegen?
Dadurch würde die Datenbasis von 80-120.000 Zeilen auf nur noch ein Bruchteil dessen schrumpfen!
Aufgrund der unzähligen Auswertungen und Anzeigemöglichkeiten im Tabellenblatt Umsatzüberblick ist es mir leider nicht möglich die Auswertungen aus diesem Tabellenblatt einfach als Werte in einer Hilfstabelle aufzuführen und per S-Verweis heranzuziehen. Dann müsste ich dies für jede Auswertungsform und für jeden Kunden machen, und das in jedem Monat dem ich die Datenbasis aktualisiere erneut.
Leider ist es mir auch nicht möglich, diese gewünschte Funktion gleich in das SQL Skript einzubauen.
Wenn ich jedoch ein VBA Makro hätte, dass mir die Daten entsprechend zusammenfasst könnte ich nach der monatlichen Aktualisierung der Datenbasis über die Datenbankverknüpfung kurz das Makro anwerfen und habe das Datenvolumen deutlich gekürzt.
Danke im Voraus!