Stetiges Intervall ]a,b[:
=SUMMENPRODUKT(--($A$1:$A$999>20);--($A$1:$A$999<90);$B$1:$B$999)
enthält als Bedingung ein Intervall. So weit, so gut, so verständlich. Ärgerlich daran aber ist die doppelte Ansprache des Bereichs $A$1:$A$999, für den die Bedingung zwischen 20 und 90 auf dem Zahlenstrahl gültig sein soll.
Das kann man vermeiden: Verschieben wir das 70 Einheiten breite Intervall um -55 auf von -35 bis +35, begnügt sich die Funktion mit nur einem $A$1:$A$999:
=SUMMENPRODUKT(--(ABS($A$1:$A$999-55)<35);$B$1:$B$999)
Wir normieren also das Intervall um Null herum und nutzen die Eigenschaft von ABS(), positives und negatives Glied gleich zu behandeln.
Das ist kürzer und - schneller! Die Formel legt etwa zwischen 10% und 30% an Geschwindigkeit zu. Falls dies eine große Rolle spielt: 0038.htm. ABS() ist in diesem Sinne in jedem anderen Intervall anwendbar.
Bei allgemeiner Formulierung (im folgenden: zwei Umformungsschritte) ergibt sich:
=SUMMENPRODUKT(--($A$1:$A$999>UNTEN);--($A$1:$A$999<OBEN);$B$1:$B$999)
=SUMMENPRODUKT(--(ABS($A$1:$A$999-(OBEN+UNTEN)/2)<(OBEN-UNTEN)/2);$B$1:$B$999)
=SUMMENPRODUKT(--(ABS($A$1:$A$999*2-OBEN-UNTEN)<OBEN-UNTEN);$B$1:$B$999)
Hier sieht man, dass der Ausdruck $A$1:$A$999 allein nicht lang genug ist, um die ABS()-Formel mit Intervallbezügen statt Intervallwerten abzukürzen - als Demonstration hier also die Ausnahme zur Regel.
Diskretes (halboffenes) Intervall ]a,b]:
Der in der Praxis bedeutsamere Fall lautet (Änderungen gegenüber oben in rot)
=SUMMENPRODUKT(--($A$1:$A$999>20);--($A$1:$A$999<=90);$B$1:$B$999)
(als Variante für lückenlose Klassen), für den
=SUMMENPRODUKT(--(ABS($A$1:$A$999-55)<=35);$B$1:$B$999)
falsch ist. 20 würde hier ungewollt berücksichtigt. Es soll aber nur 90, nicht auch 20, mit in das Intervall fallen.
Die Lösung ist es, die Hälfte der kleinstmöglichen diskreten Werteänderung - bei Euro ist dies 1 Cent, also 0,5 Cent - zusätzlich abzuziehen:
=SUMMENPRODUKT(--(ABS($A$1:$A$999-55,005)<35);$B$1:$B$999)
Damit verlegt man die Intervallgrenzen auf unmögliche Werte (hier 20,005 und 90,005) und erfasst trotz exklusiver "<"-Formulierung alle vorkommenden Werte. Die Anwendung muss dabei aber sicherstellen, dass die Daten auf ,01 gerundet sind!
=SUMMENPRODUKT(--(ABS($A$1:$A$999*2-110,01)<70);$B$1:$B$999)
kann man genauso dafür nehmen - wir benötigen dies zum Verständnis der
folgenden Formel.
Allgemein - mit Bezügen statt Zahlen - ergibt sich also:
=SUMMENPRODUKT(--(ABS($A$1:$A$999*2-OBEN-UNTEN-KleinsteEinheit)<OBEN-UNTEN);$B$1:$B$999)
wobei hier KleinsteEinheit = 0,01 ist.
Warum nicht 0,005, also KleinsteEinheit/2? Weil wir abkürzend die ganze
Bedingung \*2 genommen haben!
-