Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
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 Rechenpower - die Zweite

Formel Rechenpower - die Zweite
31.10.2013 16:38:51
nontacky
Hallo Leute,
ich habe mich dem Performance Problem noch mal etwas analytischer zugewandt. Ich habe mir einen Benchmark gebaut = wie lange braucht die Berechnung nach eine Eingabe wenn alle Formeln "an" sind. Schön mit Stoppuhr abgemessen. Das habe ich dann bei allen nötigen Eingabefeldern gemacht um so zu sehen bei welchen Eingaben Excel wie lange rechnet.
Dann habe ich alle Spalten mit Formeln eine nach der anderen "ausgeschaltet" (einfach die Formeln gelöscht) und wieder geschaut wie lange nun bei einer Dateneingabe gerechnet wird.
Ziemlich viel Zeit gestoppt habe ich da, aber jetzt bin ich schlauer: die Formeln die richtig, richtig viel verbrauchen sind jene in denen ich per Summewenn eine ganze Spalte (macht übrigens keinen Unterschied ob z.B: nur 10.000 Zeilen oder wirklich die ganze Spalte A:A) nach einem Eintrag durchsuche, und dann eine Summe aus den entsprechenden Beträgen die zu dem gesuchten Eintrag passen, bilde. Ein solche Formel in 6.000 Zeilen kopiert, frisst richtig was weg. Ich habe zwei Spalten à 7.000 Zeilen in denen eine solche Formel ist - wenn die "an" sind, dann rechnet mein Benchmark im schlimmsten Fall 30 Sekunden, wenn sie "aus" sind, dann rechnet der Benchmark max. eine Sekunde.
Deswegen jetzt meine Frage:
Gibt es irgendeine andere Möglichkeit außer mit Summewenn, durch einen Funktion folgendes zu erreichen:
In einer nicht sortierten Liste (also nicht alphabetisch sortiert, etc.) von 7.000 Einträgen, sollen alle Beträge in Spalte J zusammengerechnet werden, die in Spalte G den gleichen Eintrag (ID) haben. Es handelt sich in vielen Fällen (70%) nur um eine einzigen Eintrag pro ID, aber es gibt eben auch einige Fälle (30%) in denen von 2 bis 50 Einträgen alles dabei sein kann. Also einen Ersatz für diese Formel:
SUMMEWENN(G:G;G9;J:J)
Viele Grüße,
Martin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel Rechenpower - die Zweite
31.10.2013 17:01:39
Daniel
Hi
da gibts sicherlich auch andere möglichkeiten.
wenn du Geschwindigkeit brauchst, solltst du die Liste nach Spalte G sortieren.
dann ließe sich einiges effizienter gestalten.
Gruß Daniel

AW: Formel Rechenpower - die Zweite
31.10.2013 17:06:22
nontacky
Hallo Daniel,
vielen Dank - aber die Option die Sachen zu sortieren fällt leider weg.
vg.
M

AW: Formel Rechenpower - die Zweite
31.10.2013 17:13:06
Daniel
gibts für das "nicht sortieren" einen Grund?
alternativ würde mir noch einfallen, die Summen in einer Pivottabelle berechnen und wenn du sie benötigst, per SVerweis wieder in die ausgangstabelle einlesen.
SummeWenn ist halt sehr langsam, weil jedes SummeWenn den kompletten Datenbereich durchgehen muss macht bei 7000 Datenstätzen und 7000 SummeWenn dann 49.000.000 Zellvergleiche um zum Ergebnis zu kommen.
Gruß Daniel

Anzeige
AW: Formel Rechenpower - die Zweite
31.10.2013 17:18:07
nontacky
Hallo,
das Problem ist, dass diese Liste eine Eingabedatei für Bestellungen von einem Onlineshop ist. Jede Bestellung kann einen oder mehrere Artikel beinhalten - jeder einzelne Artikel wird in eine neue Spalte eingegeben und über die Rechnungsnummer wird dann definiert welche Artikel zusammen gehören. Es gibt verschiedenste Rechnungsreihen = die "IDs" der Rechnungsnummern sind nicht zwangsläufig alphabetisch geordnet. Derjenige der diese Datei tagtäglich nutzt ist nicht sonderlich Excel affin = wenn sowas wie "alphabetisch" ordnen beachtet werden muss, dann birgt das zu viel Fehlerpotential.
VG
m.

Anzeige
AW: Formel Rechenpower - die Zweite
31.10.2013 17:24:53
Rudi
Hallo,
schau dir mal DBSumme() an.
Gruß
Rudi

AW: Formel Rechenpower - die Zweite
31.10.2013 17:51:52
nontacky
Hallo Rudi,
danke für den Tipp - DBSumme habe ich noch nie verwendet. Wenn ich das richtig verstehe, dann kann das aber hier auch nicht funktionieren, weil ich ja für jedes Ergebnis eine Zeile mit der Überschrift und darunter dem Suchkriterium brauche. Meine Liste ist so aufgebaut, dass die einzelnen Werte untereinander stehen und jeweils in der Zeile in der sie stehen dann auch zusammengerechnet werden sollen.
Also
Spalte A (ID)
001
002
002
001
003
003
003
Spalte B (Einnahme)
10€
10€
20€
20€
30€
30€
40€
das ganze 7.000 Zeilen lang.
Jetzt soll in Spalte C folgendes pro Zeile stehen
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Summe von allen Einnahmen die die ID aus Spalte A als ID haben
Ist das halbwegs klar erklärt?
VG.
M

Anzeige
Wie kommen die Werte...
31.10.2013 18:15:52
ransi
Hallo
...in Spalte A und Spalte B ?
Trägst du die von Hand ein oder werden die über Formeln erzeugt ?
ransi

AW: Wie kommen die Werte...
31.10.2013 18:23:26
nontacky
Hallo Ransi,
ja genau - die werden per Hand eingetragen. Die Lösung per Makro schaue ich mir auch noch an. Meine Ahnung von Makros ist extrem bescheiden - mal schauen ob ich das zum Laufen kriege. Das bedeutet aber, dass ich das Makro schon immer noch drüber laufen lassen muss = wenn ich die Liste immer direkt aktuell halten will, muss ich nach jedem Eintrag in einer Zeile das Makro auslösen?
VG M
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige