
Generische Formel
(=SUM(--(FREQUENCY(IF(criteria,values),values)>0)))
Zusammenfassung
Um eindeutige numerische Werte in einem Bereich zu zählen, können Sie eine Formel verwenden, die auf den Funktionen FREQUENCY, SUM und IF basiert. Im gezeigten Beispiel erscheinen Mitarbeiternummern im Bereich B5: B14. Die Formel in G6 lautet:
=SUM(--(FREQUENCY(IF(C5:C14="A",B5:B14),B5:B14)>0))
Dies gibt 2 zurück, da es in Gebäude A 2 eindeutige Mitarbeiter-IDs gibt.
Hinweis: Dies ist eine Array-Formel und muss mit Strg + Umschalt + Eingabe eingegeben werden, es sei denn, Sie verwenden Excel 365.
Erläuterung
Hinweis: Vor Excel 365 hatte Excel keine spezielle Funktion zum Zählen eindeutiger Werte. Diese Formel zeigt eine Möglichkeit, eindeutige Werte zu zählen, sofern diese numerisch sind. Wenn Sie Textwerte oder eine Mischung aus Text und Zahlen haben, müssen Sie eine kompliziertere Formel verwenden.
Die Funktion Excel FREQUENCY gibt eine Häufigkeitsverteilung zurück, bei der es sich um eine Übersichtstabelle handelt, die die Häufigkeit numerischer Werte enthält, die in "Bins" organisiert sind. Wir verwenden es hier als Umweg, um eindeutige numerische Werte zu zählen. Um Kriterien anzuwenden, verwenden wir die IF-Funktion.
Von innen nach außen filtern wir zuerst Werte mit der IF-Funktion:
IF(C5:C14="A",B5:B14) // filter on building A
Das Ergebnis dieser Operation ist ein Array wie das folgende:
(905;905;905;905;773;773;FALSE;FALSE;FALSE;FALSE)
Beachten Sie, dass alle IDs in Gebäude B jetzt FALSE sind. Dieses Array wird direkt an die FREQUENCY-Funktion als data_array geliefert . Für das bins_array liefern wir die IDs selbst:
FREQUENCY((905;905;905;905;773;773;FALSE;FALSE;FALSE;FALSE),(905;905;905;905;773;773;801;963;963;963))
Mit dieser Konfiguration gibt FREQUENCY das folgende Array zurück:
(4;0;0;0;2;0;0;0;0;0;0)
Das Ergebnis ist etwas kryptisch, aber die Bedeutung ist 905 erscheint viermal und 773 erscheint zweimal. Die FALSE-Werte werden automatisch ignoriert.
FREQUENCY verfügt über eine spezielle Funktion, die automatisch Null für alle Zahlen zurückgibt, die bereits im Datenarray angezeigt wurden. Aus diesem Grund sind die Werte Null, sobald eine Zahl gefunden wurde. Dies ist die Funktion, mit der dieser Ansatz funktioniert.
Als nächstes wird getestet, dass jeder dieser Werte größer als Null ist:
(4;0;0;0;2;0;0;0;0;0;0)>0
Das Ergebnis ist ein Array wie folgt:
(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE)
Jeder TRUE in der Liste stellt eine eindeutige Nummer in der Liste dar, und wir müssen nur die TRUE-Werte mit SUM addieren. SUM addiert jedoch keine logischen Werte in einem Array, daher müssen wir die Werte zuerst auf 1 oder Null setzen. Dies geschieht mit dem Doppel-Negativ (-). Das Ergebnis ist ein Array von nur 1 oder 0:
(1;0;0;0;1;0;0;0;0;0;0)
Schließlich addiert SUM diese Werte und gibt die Summe zurück, die in diesem Fall 2 ist.
Mehrere Kriterien
Sie können die Formel erweitern, um mehrere Kriterien wie folgt zu behandeln:
(=SUM(--(FREQUENCY(IF((criteria1)*(criteria2),values),values)>0)))