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

Zählen mit Oder-Bedingung

Zählen mit Oder-Bedingung
21.04.2020 08:43:57
Sifi
Guten Morgen,
mein kleines Excelproblem konnte ich trotz Recherche im Internet bisher nicht beheben. Ich möchte in einem Schritt angezeigt bekommen, wie oft die Code in Spalte E und F an einem Tag vorkamen. Dabei ist eine "ODER"-Bedingung zu berücksichtigen. Für meinen Fall habe ich ein Beispiel hochgeladen.
In diesem mache ich über eine Hilfsspalte C und D kurz die Abfrage, ob der Code vorkam oder nicht. In Spalte J und K ziehe ich dann die Summen für den jeweiligen Tag. Da die Daten später endlose Zeilen haben, wollte ich die Hilfsspalten C und D vermeiden. Ich bekomme es jedoch nicht hin (nicht mit Summenprodukt etc.), dass mir das richtige Ergebnis angezeigt wird. Habt ihr eine Idee?
https://www.herber.de/bbs/user/136916.xlsx

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zählen mit Oder-Bedingung
21.04.2020 09:07:10
Hajo_Zi
in Spalte E steht nichts, das muss also nicht verglichen werden.
Das Datum das als Grundlage diernt sehe ich auch nicht. Wo steht das Datum für Spalt F?

AW: Zählen mit Oder-Bedingung
21.04.2020 13:05:13
Sifi
Hallo Hajo,
danke für dein Bemühen. Spalte E ist leer. Bin da verrutscht. Meinte Spalte F und G. In denen waren die Code welche in Spalte B nach Datum (Spalte A) aufgelistet sind. In Spalte I stehen die jeweiligen Tage, an denen ich wissen wollte, wie viele positiven und negativen Code vorkommen. Mit den Lösungen der anderen Kommentare funktioniert es. Wollte dir es aber trotzdem noch erklären.
Anzeige
AW: Zählen mit Oder-Bedingung
21.04.2020 13:06:35
Sifi
Hallo Chris,
danke für deine Hilfe. Power Query kannte ich bisher nicht. Werde es mir mal anschauen (auch für die Zukunft bei großen Mengen an Daten). Aktuell funktioniert es mit der Formel von Daniel.
AW: Zählen mit Oder-Bedingung
21.04.2020 09:54:43
Daniel
Hi
die Auswertung kannst du für deine Beispieldatei ohne Hilfsspalte so machen:
negativ J2: =SUMMENPRODUKT(ZÄHLENWENNS($A:$A;$I2;$B:$B;$F$2:$F$6))
positiv K2: =SUMMENPRODUKT(ZÄHLENWENNS($A:$A;$I2;$B:$B;$G$2:$G$6))
es fällt auf, dass negative immer mit -2 enden und positvie immer mit -1
wenn das durchgängig ist ist, dann kannst du auch einfach so auswerten:
negativ J2: =ZÄHLENWENNS($A:$A;$I2;$B:$B;"*-2")
positiv K2: =ZÄHLENWENNS($A:$A;$I2;$B:$B;"*-1")
wenns später mal endlose Zeilen gibt, wird das rechenintensiv.
dann müsste man doch mit Pivot auswerten oder die andere alternative ist, dass du die Liste nach Datum sortierst und dann die Einschränkung für das Datum nicht über Bedingung des ZählenWenns realisierst, sondern dass du für jeden Tag die Start- und Endzeile ermittelst und dann für diesen Tag nur ein einfaches ZählenWenn gezielt auf den Zellbereich des Tages anwendest (Stichwort: Index)
Gruß Daniel
Anzeige
AW: Zählen mit Oder-Bedingung
21.04.2020 13:12:14
Sifi
Hallo Daniel,
danke für die Hilfe. Funktioniert einwandfrei. Die Vereinfachung kann ich leider nicht nehmen. Es gibt noch eine dritte Kategorie "neutral" in der sind Code mit -1 und -2. Hatte sie für das Beispiel nur weggelassen. Also endlos bedeutet aktuell ca. 24.000 Zeilen. Das müsste ja noch recht normal laufen. Oder nicht?
Mit Pivot wollte ich nicht so gerne arbeiten, da ich die Auswertung später über Makros gemacht werden soll. Und meine Fähigkeiten in VBA Basics sind, aber nicht wie man eine Pivot erzeugt :) Oder wisst ihr das auch?
AW: Zählen mit Oder-Bedingung
21.04.2020 13:56:26
Daniel
Hi
kommt darauf an, wieviele Tage und wieviele Werte es für die Definition von Negativ und Positiv es gibt.
jedes ZählenWenn läuft mit einer Schleife über den kompletten angegebenen Zellbereich, das ganze multipliziert mit der Anzahl der Texte in der letzten Bedingung.
eine Berechnung dauert da schon recht lange.
wenn du nur wenige Tage hast aber viele Datensätze für einen Tag, dann brauchst du nur wenige Formeln und es sollte passen
hast du viele Tage mit nur wenigen Datensätzen pro Tag, dann hast du auch viele Formeln und dann sollte man schon schauen, dass man die Rechenzeit pro Formel runter bekommt.
ein Weg wäre, dass man eben die Datenquelle nach Tag aufsteigend sortiert, so dass man über Index den Zellbereich für den jeweiligen Tag einschränken kann, so dass jedes ZählenWenn nicht über die ganzen 24.000 Zeilen laufen muss, sondern eben nur über die Zeilen, die für den jeweiligen Tag relevant sind.
oder du arbeitest doch mit einen Hilfsspalten.
was in der Hilfsspalte steht, muss nicht nicht mehr innerhalb der Auswerteformel berechnet werden, sondern kann direkt ausgelesen werden.
Somit können Hilfsspalten ein gutes Mittel sein, in großen Datenmengen die Rechenlast zu reduzieren.
wenn du beispielsweise in jeweils einer eigenen Spalte Positiv und Negativ mit einer 1 kennzeichnest (so wie du es hast) und du dir Start- und EndZeile eines Tages ermittelst (auch das geht in sortierten Listen sehr schnell mit vergleich), dann kannst du direkt mit einer einfachen Summe auswerten und das geht dann auch bei riesigen Datenmengen als Formel sehr schnell.
Gruß Daniel
Anzeige
AW: Zählen mit Oder-Bedingung
21.04.2020 14:39:40
Sifi
Also die Auswertung hat immer 10 Spalten und ist immer nach Datum aufsteigend sortiert. Wenn ich 1 Monat betrachte (ca. die 24.000 Zeilen) dann brauche ich für die 28/30/31 Tage die jeweiligen Werte. Bei 1 Woche dann ja nur für 7 Tage.
Wie schränke ich das mit dem Index dann genau ein?
Wenn ich es über Hilfsspalten mache, vergrößere ich ja die Dateigröße massiv. bei 24.000 Formeln a 2 Spalten. Und diese über ein Makro reinzuschreiben dauert bestimmt auch lange.
AW: Zählen mit Oder-Bedingung
21.04.2020 14:49:21
Daniel
HI
naja, statt der Spaltenangabe A:A oder dem fixen A1:A24000 schreibt man dann als Zellbezug:
Index(A:A;StartZeile):Index(A:A;EndZeile)
Start- und Endzeile ermittelt man am besten in extra Zellen, da man diese Werte in der Formel mehrfach benötigt und man dann nur den Zellbezug in der Formel stehen hat und nicht die komplette Berechnung.
in einer Sortierten Datumsliste berechnet man die Endzeile eines gesuchten Datums am besten mit VERGLEICH: =Vergleich(Datum;A:A;1)
bei mehrfach vorkommenden Werten liefert Vergleich immer die Position des letzten Wertes
die Startzeile sucht man dann so:
=Vergleich(Datum-0,01;A:A;1)+1
dh man sucht nach einem Wert, der etwas kleiner ist als das gesuchte Datum. Dieser gesuchte Wert muss nicht in der Liste vorhanden sein. Ist er es nicht, wird als Ergebnis die letzte Position des nächstkleineren Wertes ausgegeben, daher der Abzug und das +1
damit du keinen Fehler bei einer Suche nach dem ersten Datum in der Liste bekommst, solltest du in der Liste am Anfang eine Dummy-Zeile einfügen und dort 0 eintragen.
außerdem müsstest du zusätzlich prüfen, ob das gesuchte Datum überhaupt in der Liste ist.
ist es das nicht, wirst du trotzdem ein Ergebnis bekommen, daher muss man die Prüfung voranstellen:
=Wenn(SVerweis(Datum;A:A;1;1)=Datum;...hier dann die Berechnung;...0...)
Gruß Daniel
Anzeige
AW: Zählen mit Oder-Bedingung
22.04.2020 14:22:36
Sifi
Hallo Daniel,
habe mal deine Formel ausprobiert. Wenn ich in 2 Zellen das Start und das Enddatum suche passt alles. In H16 steht die Startzeile und in H17 die Endzeile.
Wenn ich die Indexformel in einer eigenen Zelle mache stimmt das Datum (in der Beispieldatei 02.03.2020) auch. (Übernehme ich das Vorgehen in eine andere Datei (exakte Schreibweise etc. nur andere Spalten, aber das ist ja egal) kommt bei der Indexformel #Value als Fehlermeldung).
Füge ich jetzt den Indexbezug ein, kommt ebenfalls eine #Value Fehlermeldung. Hab es auch mit verschiedenen Klammersetzungen versucht.
=SUMPRODUCT(COUNTIFS((INDEX(A:A;H16):INDEX(A:A;H17));$I$3;$B:$B;$F$3:$F$7))
Mit Sverweis
=IF(VLOOKUP(I3;$A:$A;1;1)=I3;SUMPRODUCT(COUNTIFS((INDEX(A:A;H16):INDEX(A:A;H17));$I$3;$B:$B;$F$3:$F$7));0)
Anzeige
AW: Zählen mit Oder-Bedingung
22.04.2020 14:40:42
Daniel
HI
bei den ganzen -Wenn(s)-Funktionen müssen die Zellbereiche gleich groß sein.
sowas wie SummeWenn(A1:A10;"x";B:B)
funktioniert nicht,
wenn dann SummeWenn(A:A;"x";B:B)
oder SummeWenn(A1:A10;"x";B1:B10)
Gruß Daniel
AW: Zählen mit Oder-Bedingung
22.04.2020 15:05:11
Sifi
Danke. So funktioniert es jetzt
=IF(VLOOKUP(I3;$A:$A;1;1)=I3;SUMPRODUCT(COUNTIFS((INDEX(A:A;H16):INDEX(A:A;H17));$I$3;(INDEX(B:B;H16):INDEX(B:B;H17));$F$3:$F$7));0)
Allerdings braucht die Excel bei den wenigen Daten ein bisschen bis sie sich kalkuliert hat. Aber liegt vllt. heute auch am PC :)
AW: Zählen mit Oder-Bedingung
22.04.2020 15:16:03
Daniel
HI
wie gesagt, obs was und wieviel bringt, hängt davon ab ob du wenige Tage mit vielen Zeilen oder viele Tage mit wenigen Zeilen hast.
btw die erste Bedingung mit der Prüfung auf den Tag kannst du jetzt weglassen, das sollte durch die Zeilenenschränkung gegeben sein.
und wie gesagt, wenn du eine! Hilfsspalte hinzufügst in welcher du die Kennhzeichnung mit P und N für Positiv oder Negativ vornimmst, könnte auch die Rechenzeit verkürzen, weil du dann die Auswertung einfach direkt mit einem einfachen ZählenWenns machen kannst.
Gruß Daniel
Anzeige
AW: Zählen mit Oder-Bedingung
21.04.2020 13:12:45
Sifi
Hallo Günther,
danke für deine Hilfe. Power Query kannte ich bisher nicht. Werde es mir mal anschauen (auch für die Zukunft bei großen Mengen an Daten). Aktuell funktioniert es mit der Formel von Daniel.

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige