
Zusammenfassung
Um COUNTIFS (oder COUNTIF) mit einem variablen Bereich zu konfigurieren, können Sie die OFFSET-Funktion verwenden. In dem gezeigten Beispiel lautet die Formel in B11:
=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")
Diese Formel zählt nicht leere Zellen in einem Bereich, der bei B5 beginnt und 2 Zeilen über der Zelle endet, in der die Formel lebt. Dieselbe Formel wird wie gezeigt 2 Zeilen unter dem letzten Eintrag in den Daten kopiert und eingefügt.
Erläuterung
In dem gezeigten Beispiel lautet die Formel in B11:
=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")
Die Einrichtung eines variablen Bereichs erfolgt von innen nach außen durch die OFFSET-Funktion:
OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1) // variable range
OFFSET hat fünf Argumente und ist folgendermaßen konfiguriert:
- Referenz = B $ 5, beginnen Sie in Zelle B5, Zeile gesperrt
- Zeilen = 0, Versatz von Nullzeilen von der Startzelle
- Spalten = 0, Versatz Null Spalten Startzelle
- Höhe = REIHE () - REIHE (B $ 5) -1 = 5 Zeilen hoch
- Breite = 1 Spalte breit
Um die Höhe des Bereichs in Zeilen zu berechnen, verwenden wir die ROW-Funktion wie folgt:
ROW()-ROW(B$5)-1 // work out height
Da ROW () die Zeilennummer der "aktuellen" Zelle zurückgibt (dh die Zelle, in der die Formel lebt), können wir dies folgendermaßen vereinfachen:
=ROW()-ROW(B$5)-1 =11-5-1 =5
Mit der obigen Konfiguration gibt OFFSET den Bereich B5: B9 direkt an COUNTIFS zurück:
=COUNTIFS(B5:B9,"") // returns 4
Beachten Sie, dass der Verweis auf B $ 5 in der obigen Formel eine gemischte Referenz ist, bei der die Spalte relativ und die Zeile gesperrt ist. Dadurch kann die Formel in eine andere Spalte kopiert werden und funktioniert weiterhin. Nach dem Kopieren nach C12 lautet die Formel beispielsweise:
=COUNTIFS(OFFSET(C$5,0,0,ROW()-ROW(C$5)-1,1),"")
Hinweis: OFFSET ist eine flüchtige Funktion und kann in großen oder komplexen Arbeitsblättern zu Leistungsproblemen führen.
Mit INDIREKT und ADRESSE
Ein anderer Ansatz besteht darin, eine Formel zu verwenden, die auf den Funktionen INDIREKT und ADRESSE basiert. In diesem Fall stellen wir einen Bereich als Text zusammen und verwenden dann INDIRECT, um den Text als Referenz auszuwerten. Die Formel in B11 wäre:
=COUNTIFS(INDIRECT(ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())),"")
Mit der Funktion ADRESSE wird ein Bereich wie folgt erstellt:
ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())
In der ersten Instanz von ADDRESS geben wir die Zeilennummer als fest codierten Wert 5 an und geben die Spaltennummer mit der Funktion COLUMN an:
=ADDRESS(5,COLUMN()) // returns "$B$5"
In der zweiten Instanz liefern wir die "aktuelle" Zeilennummer minus 2 und die aktuelle Spalte mit der Funktion COLUMN:
=ADDRESS(ROW()-2,COLUMN()) // returns "$B$9"
Nachdem wir diese beiden Werte miteinander verknüpft haben, haben wir:
"$B$5:$B$9" // as text
Beachten Sie, dass dies eine Textzeichenfolge ist. Um in eine gültige Referenz zu konvertieren, müssen wir INDIRECT verwenden:
=INDIRECT("$B$5:$B$9") // returns $B$5:$B$9 as valid range
Schließlich lautet die Formel in B11:
=COUNTIFS($B$5:$B$9,"") // returns 4
Hinweis: INDIRECT ist eine flüchtige Funktion und kann in großen oder komplexen Arbeitsblättern zu Leistungsproblemen führen.