
Ich versuche, eine Formel in Excel einzurichten, die einen Datenbereich betrachtet, dessen Daten in c7:c30 angegeben sind und dessen Kategorien Aktiv-„A“ und Abgeschlossen-„C“ in L7:L30 sind. Ich versuche, Excel jede Zeile einzeln betrachten zu lassen und zu vergleichen, ob die Daten zwischen den angegebenen Quartalsdaten 1.1.12 (B38) und 31.3.12 (C38) (dem ersten Quartal des Jahres) liegen, und wenn diese Bedingung erfüllt ist, dann diejenigen zu zählen, die mit „A“ für aktiv markiert sind.
Mir ist Folgendes eingefallen, das aber nicht funktioniert, da dabei nur das erste angegebene Datum betrachtet wird und alle mit „A“ markierten gezählt werden, wenn das erste Datum mit den Angaben für das erste Quartal übereinstimmt.
{=(WENN(($C$7:$C30>=$B$39)*($C$7:C$30<=$C$39),ZÄHLENWENN($L$7:$L30,"a"),0))}
Helfen Sie mir bitte herauszufinden, was an dieser Formel falsch ist: Sie betrachtet nicht jede Zeile einzeln, sondern zählt stattdessen alle mit A gekennzeichneten, wenn das erste Datum im Vergleich zur angezeigten if-Anweisung als wahr befunden wird.
Tut mir leid, bin nicht so gut in Excel, aber ich bin für jede Hilfe dankbar.
Danke!
Antwort1
Ich denke, Sie haben möglicherweise ein Problem mit der Art und Weise, wie Sie die Array-Formel strukturiert haben. Wenn Sie Ihre Anweisung einfach auspacken, erstellen Sie ein Array, das so viele Zeilen enthält, wie Sie haben, wobei jede Zeile das Ergebnis von COUNTIF($L$7:$L30,"a") enthält, wenn die Datumsbedingung erfüllt ist, oder 0.
Da Sie keine Zählfunktionen anwenden, die das Ganze abschließen, gibt die Funktion das gesamte Array zurück, Sie sehen jedoch nur das erste Ergebnis in der Zelle, weshalb es so aussieht, als würde es lediglich von einer Zelle gesteuert.
Ein alternativer Ansatz hierzu wäre wie folgt:
Ihre drei Tests (für jede Zeile) sind:
- Datum >= B38
- Datum <= C38
- Bedingung = "a"
und Sie möchten nur zählen, wenn alle drei zutreffen.
Praktischerweise werden wahre Werte als 1 und falsche Werte als 0 ausgewertet, sodass wir eine Multiplikationsoperation verwenden können, um das gewünschte Ergebnis zu erzielen.
Für eine einzelne Zeile sollten Sie also Folgendes tun
(C7 >= B38) * (C7 <= C38) * (L7="a")
(und natürlich erweitern Sie es auf C7:C30 usw., um die für Sie interessanten Zeilen abzudecken)
Um diese Werte dann in einem einzigen Wert zusammenzufassen, müssen Sie das Ganze in einer SUM()-Anweisung zusammenfassen, die die Liste durchgeht und alle Werte addiert.
SUM( (C7:C30>B39) * (C7:C30<=C39) * (L7:L30="a") )
Und falls Sie neugierig sind: Gehen Sie zurück zu Ihrer ursprünglichen Formel und schließen Sie sie mit einer sum()-Anweisung ab. Als Ergebnis erhalten Sie die Anzahl der Male, die Ihr Status auf „a“ gesetzt ist, multipliziert mit der Anzahl der Zeilen, die die Datumsbedingung erfüllt haben.
(Anmerkung: Array-Formeln sind anfangs ein wenig verwirrend, aber wenn man sie einmal verstanden hat, funktionieren sie ganz gut. Ich habe mich ursprünglich beihttp://www.cpearson.com/excel/ArrayFormulas.aspxwas immer noch eine ziemlich gute Erklärung ist, falls das Ganze immer noch verwirrend ist …)