Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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

Summenprodukt ABS Prüfergebnisse zählen

Summenprodukt ABS Prüfergebnisse zählen
20.03.2018 13:00:13
Andreas
Hallo Herber Fans,
nach einiger Zeit beschäftige ich mich wieder etwas intensiver mit Formeln. Genauer gesagt mit Summenprodukt / Arrayformeln.
Ich will den Absolutwert einer Spalte in Abhängigkeit von zwei Kriterien ermitteln. Also alle Zeilen einer Spalte für die Projekt und Teilprojekt übereinstimmen, sollen jeweils als Absolutwert in ihrem BUD und IST addiert werden. Das habe ich in der Testdatei in Spalte E für das BUD auch hinbekommen.
Aber kann ich anstelle des ABS Ergebnisses auch das Ergebnis der Prüfung ABS([BUD]grösser 2) in Form von 0 / 1 ausgeben lassen? Und kann ich dies dann auch mit einer weiteren Prüfung auf ABS([IST])grösser 2 kombinieren? Also wenn in beiden Spalten der Absolutwert aller Zeilen für die Projekt / Teilprojekt übereinstimmen größer 2 ist, müßte dann eine 2 drinstehen. Oder 1 oder 0, wenn die Bedingung für keine Spalte erfüllt ist.
https://www.herber.de/bbs/user/120544.xlsx
Dunkel weiss ich noch, daß ich es für eine Arrayformel schon einmal gesehen hatte. Da wurde der WAHR / FALSCH Wert einer Prüfung in 1 und 0 umgewandelt und konnte addiert werden. Ich habe schon viel gesucht, aber finde den Post nicht mehr.
Auch kommt erschwerend hinzu, daß es mit einer Summenproduktformel realisiert werden muss. Ich will die Formel dann nach Englisch übersetzen und von VBA implementieren lassen (zusammen mit einigen anderen Formeln). Bei diesem Weg können ArrayFormeln nur bis zu einer Länge von 255 Zeichen von VBA implementiert werden. Bei mehr Zeichen kommt der Debugger. Summproduktformeln sind hinsichtlich ihrer Länge hier unkritisch.
Ich wäre sehr, sehr dankbar für eine Rückmeldung aus dem Forum. Das Thema beschäftigt mich seit gestern Nachmittag und ich komme nicht weiter.
Viele Dank und Grüße, Andreas Hanisch

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kannst Du tun, allerdings
20.03.2018 13:08:36
...
Hallo Andreas,
... macht bei dies Deinen Daten ...

*((ABS([IST])>2)+(ABS([BUD])>2)))
das wenig Sinn, weil da immer 0 als Ergebnis herauskommen würde. Anstelle SUMMENPRODUKT() könntest Du auch ZÄHLENWENNS() nutzen. Doch willst Du wirklich mit 2 vergleichen?
Gruß Werner
.. , - ...
AW: kannst Du tun, allerdings
20.03.2018 13:19:00
Andreas
Hallo Werner,
du hast recht insofern, als das jede einzelne Zelle der aktuellen Filtereinstellung kleiner 2 ist. Aber alle Zellen in ihren ABS Werten addiert ergeben 3,76. Ich will prüfen, ob die ABS Summe aller übereinstimmenden Projekt / Teilprojekt Kombinationen grösser 2 ist. Nicht die einzelne Zelle. Also in Spalte E sollte dann eine 1 stehen. Im zweiten Schritt soll die Prüfung dann noch auf die Spalte [IST] ausgeweitet werden.
Was denkst Du?
Vielen Dank, Andreas
Anzeige
AW: dann ...
20.03.2018 15:33:03
...
Hallo Andreas,
... für BUD einfach so:
=(SUMMENPRODUKT(([Projektnummer]=[@Projektnummer])*([Teilprojekt]=[@Teilprojekt])*ABS([BUD]))>2) *1
Was nun genau in Deinem 2. schritt berechnet werden soll, erschließt sich mir momentan noch nicht.
Gruß Werner
.. , - ...
AW: dann ...
20.03.2018 16:52:37
Andreas
Hallo Werner,
vielen Dank, dass Du Dich noch mal gemeldet hast. Ich stehe irgendwie total auf dem Schlauch. Ansatzweise kann ich Deine Formel nachvollziehen. Die ist gut und schon mehr als ich dachte, dass mit Summenprodukt möglich ist. Über die letzten Stunden ist mir vielleicht auch erst richtig klar geworden, was das Ergebnis sein soll. Daher anbei eine neue modifizierte Beispieldatei. Ich habe dort Deine Formel leicht modifiziert eingesetzt, so dass sie nicht mehr den Absolutwert einer jeden Zelle summiert, sondern erst summiert und dann den ABS ermittelt. In Zeile 1 und 2 habe ich auch einmal geschrieben, welches Ergebnis ich für jede Zeile der Tabelle erreichen will.
Wenn ich einfach zwei oder mehr Formelteile 'SUMMENPRODUKT(([Projektnummer]=[@Projektnummer])*([Teilprojekt]=[@Teilprojekt])' in eine WENN, bzw. ODER Kondition packe, wäre ich schon am Ziel, aber dies hat die Rechenzeit bei ca. 30.000 Zeilen so sehr erhöht, daß es nicht mehr anwendbar ist.
Ich habe gerade keine Idee, wie ich mein Vorhaben sonst umsetzen kann. Zum Hintergrund: Ich möchte die Formel in einem Pivot Quelldatenset einsetzen, um wichtige ('abc') von weniger relevanten Kombinationen ('def') zu trennen. Eine Art 80 / 20 Regel für Datensätze.
Ich hoffe Du hast noch einmal eine Idee und Zeit und Muße Dein Summenprodukt Formelwissen zum Einsatz zu bringen. Dafür bin ich Dir schon jetzt dankbar!
https://www.herber.de/bbs/user/120550.xlsx
Viele Grüße, Andreas
Anzeige
AW: dann keine SUMMENPRODUKT()-Formeln ...
20.03.2018 17:14:56
...
Hallo Andreas,
... sondern nimm für Deine Daten eine PIVOTdatenauswertung vor. Dessen Ergebnisse kannst Du dann bei Bedarf auch weiter auswerten.
Gruß Werner
.. , - ...
AW: dann keine SUMMENPRODUKT()-Formeln ...
20.03.2018 17:54:02
Andreas
Hallo Werner,
die Formel ist aber leider notwendig, damit ich in der Pivot nicht so viel kleinteilige Datensätze angezeigt bekomme. Ich schließe sie ja nicht aus, da ansonsten das GrandTotal nicht mehr paßt, sondern ich zeige die Details der Zeilen mit einem 0 Eintrag nicht an. Erst über die Pivot zu gehen ist zu umständlich.
Über SummenProdukt geht es nicht? Es wäre genial wenn es geht!
Grüße, Andreas
Anzeige
AW: man kann SUMMENPRODUKT() einsetzen, doch ...
20.03.2018 19:06:35
...
Hallo Andreas,
... ca. 30.000 derartige Formeln geht auf die Performance, wie Du ja bereits selbst festgestellt hast.
Man könnte jedoch Rechenzeit einsparen, wenn Deine Daten sortiert vorliegen und zwar zuerst nach Projektnummer und dann nach Teilprojektnummer. Ist das gewährleistet?
Gruß Werner
.. , - ...
AW: nachgefragt ...
22.03.2018 08:31:11
...
Hallo Andreas,
... hat sich Dein Problem zwischenzeitlich geklärt, weil Du auf meine vorgestrige Frage nicht mehr geantwortet hast? Was Du mit "GrandTotal meinst war/ist mir unklar und unklar ist vor allem auch ob Du vergleichen willst ob das jeweilige Teilergebnis größer 0,7 oder 1 sein soll.
Wie auch immer eine SUMMENPRODUKT()-Formel kann ich Dir aufstellen. Ich kann nur nicht einschätzen, wie lange Dein PC rechnen muss, bis er die 30.000 Formeln ausgerechnet hat.
Gruß Werner
.. , - ...
Anzeige
AW: nachgefragt ...
22.03.2018 16:50:04
Andreas
Hallo Werner!
Bitte entschuldige mein gestriges Schweigen. Ich war gestern sehr intensiv mit einem anderen Excelproblem beschäftigt.
Vielen Dank Dir für Deinen abendlichen Post von vorgestern. Dieser hat eine Idee in Gang gesetzt, wie ich die Laufzeit optimieren kann. Ja, die Projekte / Teilprojekte sind sortiert. Also entschied ich mich dafür, innerhalb einer ODER Kondition über Bereich.Verschieben zunächst zu prüfen, ob überhaupt eine neue Kombination vorliegt. Wenn nicht, dann wird der Wert aus der vorhergehenden Zeile verwandt. Wenn ja, dann wird komplett neu berechnet.
https://www.herber.de/bbs/user/120614.xlsx
Ich habe in einer neuen Beispieldatei in Spalte C die Formel eingefügt, welche bei den 30.000 Datensätze eine annehmbare Laufzeit hat. Auf alle Fälle besser als wenn jede Zelle berechnet würde. Da hat Deine Frage nach der Sortierung einen sehr guten Anstoß gegeben!
Aber dennoch habe ich zwei Fragen:
1) In der ODER Kondition in welcher für jedes Summenprodukt (BUD, IST, RR) jeweils auf den ABS geprüft wird, ob der Wert größer 0,7 ist: Angenommen die ODER Kondition muss bis zum bitteren Ende geprüft werden, dann ist doch der Rechenaufwand verdreifacht, denn über die Multiplikation der Matrizen ([Projekt]=[@Projekt])*([Teilprojekt]=[@Teilprojekt]) ist doch schon bekannt, welche Zeile die Bedingung erfüllen. Einzig die Spalte welche aufsummiert werden soll ist eine andere.
Ließe sich hier nicht etwas eleganteres erstellen, a la: "MERKE Dir die passenden Zeilen, aber bilde jeweils eine andere Summe..." Und hier habe ich keinen blassen Schimmer... Wenn Du da Dein Summenprodukt Expertenwissen noch einmal in die Waagschale werfen könntest wäre ich Dir sehr dankbar!
2) Ist die ODER Formel in Excel so ausgelegt, dass sie bei NICHT- Erfüllung der ersten Kondition schon abbricht (Vergleichbar einem 'Exit For' in VBA und dadurch Rechenzeit spart) oder wird immer alles durchlaufen? Wenn ja, also wenn die Formel frühestmöglich abbricht, dann hat ja die Reihenfolge der zu prüfenden Konditionen Auswirkung auf die Performance. Also die Kondition, die am sichersten ein Ausschlußkriterium ist, immer zuerst prüfen lassen, oder? Hast Du hier Erfahrungswerte oder Insiderwissen?
Auf jeden Fall danke ich Dir schon einmal für Deinen Einsatz und Fachwissen in diesem Thread!!! Es hat mich schon sehr viel weitergebracht und mein Wissen um Formeln hat sich auch verbessert.
Ich würde mich natürlich freuen, wenn Du einen letzten Blick auf die aktuelle Formel werfen und Vorschläge zur Optimierung einbringen magst.
Viele Grüße, Andreas
PS: Danke für Dein heutiges Nachfragen!
Anzeige
AW: die Formeln innerhalb von ODER() ....
22.03.2018 17:55:09
ODER()
Hallo Andreas,
... werden alle berechnet. Somit kannst Du mE mit Formeln nur noch Zeit schinden, wenn Du ODER() nicht einsetzt und nur mit WENN() arbeitest.
Wenn z.B. bereits bei der 1. Prüfung oder spätestens der 2. Prüfung sich ein WAHR ergibt, brauchst Du die anderen beiden bzw. letzte Bedingung nicht mehr prüfen.
Lege die Reihenfolge der WENN()-Schachtelung so an, wo Du vermutest, dass da am häufigsten die Bedingung von größer 0,7 ermittelt werden könnte.
Gruß Werner
.. , - ...
AW: die Formeln innerhalb von ODER() ....
23.03.2018 22:37:02
ODER()
Hallo Werner,
vielen Dank für Dein Hintergrundwissen zur ODER Formel. Ich werde am Wochenende im Testdatenset einmal die ODER gegen eine verschachtelte WENN Formel laufen lassen und die Zeit nehmen.
Aber hast Du noch eine Idee zu Punkt 1? Du hast erwähnt, daß Du eine solche Summenproduktformel schreiben kannst. Meinst Du damit eine in welcher nicht für jede ABS Prüfung (BUD / IST / RR) die übereinstimmenden Zeilen von Projekt & Teilprojekt immer wieder neu berechnet werden müssen? Sondern eine, welche sich die einmal ermittelten Zeilen 'merkt' und basierend auf diesen die Summe einer anderen Spalte bildet?
Danke Dir für Deine Hilfe!
Viele Grüße, Andreas
Anzeige
AW: da Dein Vergleich spaltenbezogen sein soll ...
25.03.2018 17:04:05
...
Hallo Andreas,
... sowie Deine Datenwerte erst nach der Spaltenweisen Summierung mit ABS() geklammert werden sollen, sehe ich momentan keinen prinzipiellen Weg als den bereits besprochenen.
Eine etwas kürzere Alternative zu Deiner ODER()Formel mit BEREICH.VERSCHIEBEN() wäre z.B. so:
=WENN(ODER([@Projekt]BEREICH.VERSCHIEBEN([@Projekt];-1;0);[@Teilprojekt]
BEREICH.VERSCHIEBEN([@Teilprojekt];-1;0));WENN(ODER(ABS(SUMMENPRODUKT(([Projekt]=
[@Projekt])*([Teilprojekt]=[@Teilprojekt])*[BUD]))>0,7;ABS(SUMMENPRODUKT(([Projekt]=
[@Projekt])*([Teilprojekt]=[@Teilprojekt])*[IST]))>0,7;ABS(SUMMENPRODUKT(([Projekt]=
[@Projekt])*([Teilprojekt]=[@Teilprojekt])*[RR]))>0,7);"zeigen";
"nicht zeigen");BEREICH.VERSCHIEBEN([@[SumProd Formel]];-1;0))
Gruß Werner
.. , - ...
Anzeige
AW: da Dein Vergleich spaltenbezogen sein soll ...
26.03.2018 09:46:53
Andreas
Hallo Werner,
vielen Dank für Deine Antwort. Die schafft Klarheit und ich werde die Formel wie jetzt skizziert umsetzen: Bereich.Verschieben, um nicht für identische Kombinationen immer wieder neu zu rechnen + Einsatz von WENN, anstelle von ODER, um bei Erfüllung einer Kondition die weiteren Prüfungen nicht ausführen zu müssen.
Der Austausch mit Dir in dieser Sache hat mir sehr geholfen und das Ergebnis, wie ein erster Test ergab, bereits deutlich in Sachen Rechenzeit verbessert.
Ich wünsche Dir einen guten Wochenstart!
Viele Grüße, Andreas
AW: danke, wünsch ich Dir auch owT
26.03.2018 10:46:48
...
Gruß Werner
.. , - ...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige