Anzahl von Vorkommnissen eines Monats in einer Excel-Spalte zählen
Also, ich habe in Spalte B Datumsangaben in der Form TT:MM:JJJ stehen. Nun möchte ich in einer anderen Spalte zählen wie oft in Spalte B der Januar, wie oft der Februar usw. vorkommt.
Ich dachte eigentlich das es so funktioniert:
=ZÄHLENWENN(B2:B26;MONAT(B2:B26)=1)
Also im Bereich B2 bis B26 nach dem Januar suchen. Die Monatsfunktino erwartet allerdings eine einzige Zahl und keinen Bereich.
Kennt jemand eine einfache Möglichkeit die Monate zu zählen oder gleich ein VBA-Script aufsetzen zu müssen?
3 Antworten
Zählenwenn() ist ja nur eine Kurzform für eine Matrix-Formel. Wenn es etwas komplizierter wird, bietet sich an eine reinrassige Matrix-Formel zu verwenden (wobei das mit dem richtigen Kriterium in Zählenwenn auch gehen müsste. Aber da bin ich zu faul nachzudenken).
Also etwa als Formel
=summe(wenn(monat(b2:b26)=1; 1; 0)
und die Eingabe mit Umschalt-Strg-Eingabe abschließen.
Bei mehreren Monaten könnte man faulerweise auch den Suchmonat variabel halten. Angenommen, der Monat (im obigen Beispiel) stünde in C1, dann wird die Formel zu
=summe(wenn(monat(b2:b26)=c1; 1; 0)
Als Matrixforme eingegeben, kann ich die auch nach rechts ziehen.
Danke für den Hinweis.
Ich denke mir halt es hilft auch was wenn sich die Leute selbst helfen können und nicht bei jeder neuen Fragestellung erst bei GF nachhacken müssen. Von daher keine Frage, für die Cracks gibt es ziemlich viel shorthand. Derweil sollten die Nicht-Cracks auch zu einem Ergebnis kommen und verstehen was sie tun.
Gutes Nächtle noch
Gerade für die "Nicht-Cracks" ist eine "echte" Matrixformel ein Risiko und SUMMENPRODUKT imho die sicherere Variante!
Aber das ist natürlich auch Meinungssache.
Dir auch eine Gute Nacht.
... und wenn nicht nur der Januar (=SUMMENPRODUKT((MONAT(B2:B26)=1)1) gezählt werden soll,
kann man die Formel erweitern : statt "=1" einsetzen "=ZEILE()-1"
und 11 mal runterziehen, das berechnet dann das Vorkommen aller 12 Monate.
=SUMMENPRODUKT((MONAT(B2:B26)=ZEILE()-1)1)
Gruß aus Berlin
und noch lieber ZeileN($1.Zelle:nteZelle), das ist nämlich (als Gesamtbereich) beliebig verschiebbar, da kann man auch Zeilen drüber einfügen, ohne dass alles falsch wird!
Ausserdem siehe den in der AW von Oubyi beschriebenen Bug!
Na klar:
=SUMMENPRODUKT((MONAT(B2:B26)=1)1)
Klappt es?
P.S.:
Ich habe gerade durch Zufall noch einen kleine, aber fiesen Bug entdeckt.
Für Excel ist offensichtlich der Monat einer leeren Zelle auch ein Januar.
Kommt wohl daher weil 0 für Excel der 0.01.1900 ist.
Um also zu vermeiden, dass leere Zellen im Bereich als Januar gezählt werden, müsste die Formel so erweitert werden:
=SUMMENPRODUKT((MONAT(B2:B26)=1)*(B2:B26>0))
Das ist aber nur für den Januar nötig, die anderen Monate kommen mit der kurzen Formel aus.
P.S::
Noch eine Korrektur der kurzen Formel.
Da habe ich mal wieder nicht aufgepasst und mir vom Editor ein * klauen lassen.
SO ist sie richtig:
=SUMMENPRODUKT((MONAT(B2:B26)=1)*1)
Sorry!Das hab ich auch grad alles durchgekaut, genauso!
oder als Matrixformel
{=SUMME((MONAT(B2:B26)=1) * (B2:B26<>""))}
oder
{=SUMME(WENNFEHLER(MONAT(B:B)=1;0) * (B:B<>""))}
letzteres geht als Summenprodukt auch nur mit Matrixformeleingabe.
Dass 0 Jan ergibt, dürfte sich aus der eigenartigen Datumsmethode in xl erklären:
0 als Datum ergibt den 00.01.1900, das + 0,5 => 0.1.00 12:00
Vermutlich alles Konsequenzen des krampfhaften Versuchs, einen Fehler aus der Urzeit der EDV zu korrigieren: den fälschlich angenommenen, aber tatsächlich nicht existenten 29.2.1900 in den Griff zu bekommen!
sehe grade, dass Du das ja auch schon geschrieben hattest, kann es nicht mehr gezielt löschen.
Wenn möglich verwende ich immer SUMMENPRODUKT, was ja im Prinzip auch eine Matrixformel ist, aber nicht das Risiko birgt die { } wieder zu "verlieren", wenn man mal kurz reingeklickt hat.
Auch als "echte" Matrix sollte es ohne zusätzliches WENN klappen:
{=SUMME((MONAT(B2:B26)=1)*1)}