Kurz gefasst —
ROWS(array)liefert, wie viele Zeilen ein Bereich oder Array hat, undCOLUMNS(array)liefert, wie viele Spalten.ROWS(A1:A10)ist10;COLUMNS(A1:C1)ist3. Die Pluralformen messen eine Größe; die Singularformen ROW und COLUMN melden eine Position — ein Unterschied von einem Buchstaben, der die Antwort vollständig verändert. Der Gewinn sind Formeln, die sich selbst neu dimensionieren: einVLOOKUP-Spaltenindex, der korrekt bleibt, wenn Sie eine Spalte einfügen, eine Zählung der Zeilen, die einFILTERzurückgab, und "die letzte Zeile" ohne fest kodierte Zahl.
=ROWS(A1:A10) ' -> 10 wie viele Zeilen im Bereich
=COLUMNS(A1:C1) ' -> 3 wie viele Spalten im Bereich
=ROWS(A1:C10) ' -> 10 immer noch 10 — es zählt Zeilen, ignoriert die Breite
=COLUMNS($A$1:C$1) ' -> 3 das Ziehen des Endes lässt dies wachsen: 1, 2, 3, ...
=ROWS(FILTER(data, keep)) ' -> 42 wie viele Zeilen der Filter geliefert hat
=ROWS(A:A) ' -> 1048576 eine ganze Spalte — die physische Zeilenanzahl
Hinweis für deutsches Excel: Im deutschen Excel heißen diese Funktionen ZEILEN (ROWS), SPALTEN (COLUMNS), ZEILE (ROW), SPALTE (COLUMN), SVERWEIS (VLOOKUP), INDEX (INDEX, gleich), VERGLEICH (MATCH), FILTER (FILTER, gleich), SEQUENZ (SEQUENCE) und ANZAHL2 (COUNTA). Der Fehlerwert
#REF!erscheint in der deutschen Oberfläche als #BEZUG!. Die Formeln unten verwenden bewusst die englischen Funktionsnamen (sie funktionieren versionsübergreifend und sind die Suchbegriffe).
ROWS und COLUMNS sehen wie Nebensächlichkeiten aus, bis Ihnen auffällt, wie viel
zerbrechliche, fest kodierte "es gibt 3 Spalten / die Daten enden in Zeile 200"-Logik sie
ersetzen. Sie verwandeln eine feste Zahl, die ein Kollege kaputt machen wird, in einen
Wert, den Excel aus dem Bereich selbst neu berechnet. Der Trick besteht darin, sie von
ihren Singular-Vettern getrennt zu halten.
Was Sie lernen werden
- Das mentale Modell:
ROWS/COLUMNSmessen Größe, nicht Position - Die Ein-Buchstaben-Falle: warum
ROW(A1:A10)undROWS(A1:A10)Verschiedenes liefern - Die entscheidende Verwendung: ein
VLOOKUP-Spaltenindex, der eingefügte Spalten übersteht - Das Zählen der Zeilen, die ein dynamisches Array oder
FILTERerzeugt hat - Das Finden der letzten Zeile / des Mittelpunkts eines Bereichs ohne feste Kodierung
- Die Ganze-Spalte-Falle, in der
ROWS(A:A)über eine Million ist
Das mentale Modell: Größe, keine Position
Der Plural ist die ganze Geschichte. ROW und COLUMN beantworten wo ist diese
Zelle? — sie liefern eine Koordinate zurück. ROWS und COLUMNS beantworten eine
andere Frage: wie groß ist dieser Block? — sie liefern eine Anzahl zurück.
ROWS(A1:A10) kümmert sich nicht darum, was im Bereich steht oder wo er sitzt; es meldet,
dass der Bereich 10 Zeilen umspannt. COLUMNS(A1:C1) meldet 3 Spalten.
Deshalb ist ROWS(A1:C10) gleich 10, nicht 30: es zählt Zeilen, und der Bereich
ist zehn Zeilen hoch, unabhängig davon, dass er drei Spalten breit ist. Die beiden
Funktionen sind ein Maßband für ein Rechteck — die eine gibt die Höhe, die andere die
Breite. Wie ihre Singular-Vettern sind sie nicht flüchtig, und sie messen
bereitwillig einen Bereichsbezug oder ein Array-Literal (ROWS({1;2;3}) ist 3), was
sie zu einer günstigen, stabilen Möglichkeit macht, einer anderen Funktion eine Größe zu
übergeben.
Die Ein-Buchstaben-Falle: ROW vs. ROWS
Das ist die Verwechslung, die es sich einzuprägen lohnt, weil sie still innerhalb von Array-Formeln fehlschlägt:
=ROW(A1:A10) ' -> {1;2;3;4;5;6;7;8;9;10} ein ARRAY von Positionen (Singular)
=ROWS(A1:A10) ' -> 10 eine einzelne ANZAHL (Plural)
Singular ROW mit einem Bereich liefert eine Zahl pro Zeile — eine übergelaufene Liste
von Koordinaten. Plural ROWS liefert eine einzelne Summe. In einer schlichten Zelle ist
der Unterschied offensichtlich, aber lassen Sie die falsche in INDEX, SEQUENCE oder
ein SUMPRODUCT fallen, und Sie erhalten eine falsche Antwort ohne warnenden Fehler —
SEQUENCE(ROW(data)) versucht, eine Sequenz der falschen Länge zu bauen, während
SEQUENCE(ROWS(data)) eine Zeile pro Datenzeile baut, wie beabsichtigt. Wenn Sie "wie
viele" meinen, ist es der Plural. Wenn Sie "welche" meinen, ist es der Singular.
Die entscheidende Verwendung: ein VLOOKUP-Spaltenindex, der nie bricht
Das Wertvollste, was COLUMNS tut, ist, VLOOKUP
Bearbeitungen überstehen zu lassen. VLOOKUPs drittes Argument ist eine harte Zahl — gib
Spalte 2 oder 3 oder 4 zurück —, und genau diese Zahl bricht, wenn jemand eine Spalte in
die Tabelle einfügt. Ersetzen Sie sie durch COLUMNS, und sie berechnet sich neu:
=VLOOKUP($A2, Prices, COLUMNS($B$1:B$1), FALSE) ' erste Ergebnisspalte -> Index 2
' nach rechts ziehen: COLUMNS($B$1:C$1) -> 3, COLUMNS($B$1:D$1) -> 4, ...
Verankern Sie die linke Kante ($B$1) und lassen Sie die rechte Kante mitfahren, während
Sie ziehen: Der Bereich verbreitert sich bei jedem Schritt um eine Spalte, sodass
COLUMNS 2, 3, 4… zählt und VLOOKUP einen Index speist, der von selbst hochklettert.
Weil der Index jetzt aus dem Blatt abgeleitet wird statt getippt, verschiebt das
Einfügen einer Spalte alles konsistent, und die Nachschlagevorgänge zeigen weiterhin auf
die richtigen Felder. Das ist der ganze Existenzgrund der Pluralfunktionen: eine Größe,
die sich anpasst, schlägt eine Zahl, an deren Korrektur Sie denken müssen. (In
Excel 365 umgehen INDEX/MATCH oder XLOOKUP den Index
vollständig — aber für die Millionen bereits existierender VLOOKUPs ist COLUMNS die
günstigste Härtung, die Sie hinzufügen können.)
Ein dynamisches Array oder gefiltertes Ergebnis zählen
Wickeln Sie ROWS um eine übergelaufene Formel, und Sie erhalten "wie viele hat das
zurückgegeben?" — oft direkter als eine COUNT-Variante:
=ROWS(FILTER(Orders, Region="West")) ' wie viele West-Bestellungen passten
=ROWS(UNIQUE(Customers)) ' wie viele eindeutige Kunden
=COLUMNS(A1#) ' wie breit ein Spill-Bereich ist (der #-Operator)
ROWS(FILTER(...)) beantwortet "wie viele Datensätze erfüllen die Bedingung", indem es
das Ergebnis selbst misst — kein separates COUNTIFS, das Sie mit den Kriterien des
Filters synchron halten müssten. ROWS/COLUMNS auf einen Spill-Bezug (A1#) zu
richten, verrät Ihnen die lebenden Dimensionen eines dynamischen Arrays, während es wächst
und schrumpft. Das mentale Modell gilt: Sie messen die Größe dessen, was die innere Formel
erzeugt hat.
Letzte Zeile, Mittelpunkt und Bereichsgröße ohne feste Kodierung
Weil ROWS die Höhe eines Bereichs liefert, ist es der saubere Weg, das letzte Element
oder die Mitte eines Bereichs zu erreichen, der ständig seine Größe ändert:
=INDEX(data, ROWS(data)) ' der LETZTE Wert in einem einspaltigen Bereich
=INDEX(data, ROWS(data)/2) ' ungefähr der Mittelpunkt
=INDEX(data, ROWS(data)-1) ' der vorletzte Wert
INDEX(data, ROWS(data)) liest sich als "das Element an Position Anzahl" — also das
letzte —, und es bleibt korrekt, wenn der Bereich wächst, wo ein fest kodiertes
INDEX(data, 200) still neue Zeilen verpasst oder über das Ende hinaus zeigt. Der
Fehlerfall, den ROWS verhindert, ist die hart getippte Zeilenanzahl, die jeder zu
aktualisieren vergisst, nachdem sich die Daten ausgedehnt haben.
Die Ganze-Spalte-Falle: ROWS(A:A) ist 1.048.576
Ein Fallstrick zum Verinnerlichen: ROWS und COLUMNS zählen die physische Größe
dessen, was Sie ihnen geben, nicht, wie viel davon gefüllt ist.
=ROWS(A:A) ' -> 1048576 jede Zeile der Spalte existiert, gefüllt oder nicht
=COLUMNS(A:A) ' -> 1 Spalte A ist genau eine Spalte breit
=COLUMNS(A:C) ' -> 3
ROWS(A:A) ist die volle Höhe des Arbeitsblatts — über eine Million —, weil der Bezug
die gesamte Spalte ist. Das ist fast nie "wie viele Datenzeilen ich habe"; dafür wollen
Sie COUNTA (nicht leere Zellen) oder eine
Spill-/FILTER-Zählung. Die physische Dimension eines Ganze-Spalte-Bezugs mit der Anzahl
der genutzten Zeilen zu verwechseln, ist die eine Art, wie diese Funktionen Menschen
überraschen — halten Sie "wie groß ist dieser Bezug" getrennt von "wie viel ist
ausgefüllt".
Die Ermessensfrage
Greifen Sie zu den Pluralformen, wann immer Sie im Begriff sind, eine Dimension fest zu
kodieren. Ein VLOOKUP-Index, getippt als 4, ein "die Daten enden in Zeile 500", das
ein Kollege nächste Woche ungültig macht, ein "es gibt 12 Monate quer" — jedes ist ein
ROWS/COLUMNS, das darauf wartet zu geschehen, und jedes wird selbstanpassend in dem
Moment, in dem Sie es aus dem Bereich ableiten, statt es zu tippen. Die einzige echte
Gefahr ist die Singular/Plural-Verwechslung: Wenn Ihre Formel plötzlich ein verdächtig
langes übergelaufenes Array zurückgibt, wo Sie eine Zahl erwarteten, haben Sie fast sicher
ROW geschrieben, wo Sie ROWS meinten. Messen Sie Größen mit dem Plural, lesen Sie
Positionen mit dem Singular, und die fest kodierten Zahlen verschwinden aus Ihren
Modellen.
Wie ExcelMaster hilft
Der COLUMNS-basierte VLOOKUP-Index ist die Art Härtung, von der Menschen wissen, dass
sie sie tun sollten, und sich selten die Mühe machen. Bitten Sie ExcelMaster,
"diesen VLOOKUP eingefügte Spalten überstehen zu lassen", und es schreibt das dritte
Argument als verankertes COLUMNS($B$1:B$1) um, das beim Ziehen hochklettert — oder
bietet die INDEX/MATCH-Version an, wenn Sie auf einer modernen Version sind. Bitten Sie um
"wie viele Zeilen hat mein Filter zurückgegeben", und es wickelt das Ergebnis in
ROWS(...), statt ein zweites COUNTIFS anzuschrauben, das Sie synchron halten müssten.
Und wenn Sie eine Formel einfügen, die ROW und ROWS verwechselt, fängt es den
Singular-gegen-Plural-Ausrutscher ab, bevor er zu einem stillen Um-tausend-daneben wird.
Häufig gestellte Fragen
Was macht die ROWS-Funktion in Excel?
ROWS(array) liefert die Anzahl der Zeilen in einem Bereich oder Array. =ROWS(A1:A10)
liefert 10, und =ROWS(A1:C10) liefert ebenfalls 10, weil der Bereich zehn Zeilen
hoch ist, unabhängig von seiner Breite. Es misst eine Größe, anders als ROW, das die
Zeilennummer einer Zelle liefert.
Was ist der Unterschied zwischen ROW und ROWS (und COLUMN vs. COLUMNS)?
Der Plural zählt, der Singular lokalisiert. ROWS(A1:A10) liefert 10 (wie viele
Zeilen); ROW(A1:A10) liefert das Array {1;2;…;10} (die Nummer jeder Zeile). Verwenden
Sie ROWS/COLUMNS, wenn Sie eine Größe brauchen, und
ROW/COLUMN, wenn Sie eine Position brauchen.
Wie zähle ich die Anzahl der Spalten in einem Bereich?
Verwenden Sie =COLUMNS(range). =COLUMNS(A1:F1) liefert 6. Um zu zählen, wie viele
Datenspalten in einer Zeile tatsächlich gefüllt sind, kombinieren Sie es mit einem
COUNTA, aber für die Breite eines definierten Bereichs ist COLUMNS exakt.
Wie macht COLUMNS eine VLOOKUP-Formel robuster?
Ersetzen Sie VLOOKUPs fest kodiertes drittes Argument durch ein verankertes
COLUMNS($B$1:B$1). Während Sie die Formel nach rechts ziehen, verbreitert sich der
Bereich, und COLUMNS liefert 2, 3, 4…, sodass der Spaltenindex automatisch
hochklettert und weiter funktioniert, wenn Spalten eingefügt werden — keine manuelle
Neunummerierung.
Warum liefert ROWS(A:A) 1.048.576?
Weil ein Ganze-Spalte-Bezug jede Zeile im Blatt ist und Excel-Arbeitsblätter 1.048.576
Zeilen haben. ROWS/COLUMNS melden die physische Größe des Bezugs, nicht, wie viele
Zellen gefüllt sind. Für die Anzahl der genutzten Zeilen verwenden Sie COUNTA(A:A) oder
ein FILTER-Ergebnis.
Getestet in
Getestet in: Excel 365 (Windows 11) — zuletzt geprüft am 2026-07-13.
Verwandte Anleitungen: Excel ROW & COLUMN · Excel HYPERLINK · Excel VLOOKUP · INDEX & MATCH · Excel FILTER
