🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Funciones ROWS & COLUMNS (FILAS & COLUMNAS) en Excel — Cuenta el tamaño de un rango (no su posición)

|

Funciones ROWS & COLUMNS (FILAS & COLUMNAS) en Excel — Cuenta el tamaño de un rango (no su posición)

En resumenROWS(matriz) devuelve cuántas filas tiene un rango o matriz, y COLUMNS(matriz) devuelve cuántas columnas. ROWS(A1:A10) es 10; COLUMNS(A1:C1) es 3. Las formas en plural miden un tamaño; las singulares ROW y COLUMN informan de una posición — una diferencia de una letra que cambia por completo la respuesta. La recompensa son fórmulas que se redimensionan solas: un índice de columna de VLOOKUP que sigue siendo correcto cuando insertas una columna, un recuento de las filas que devolvió un FILTER, y "la última fila" sin fijar un número a mano.

=ROWS(A1:A10)                 ' -> 10    cuántas filas hay en el rango
=COLUMNS(A1:C1)               ' -> 3     cuántas columnas hay en el rango
=ROWS(A1:C10)                 ' -> 10    sigue siendo 10 — cuenta filas, ignora el ancho
=COLUMNS($A$1:C$1)            ' -> 3     al arrastrar el extremo crece: 1, 2, 3, ...
=ROWS(FILTER(data, keep))     ' -> 42    cuántas filas devolvió el filtro
=ROWS(A:A)                    ' -> 1048576   una columna entera — el recuento físico de filas

Nota — nombres de funciones en Excel en español. En la interfaz en español, las funciones aparecen así: ROWS → FILAS, COLUMNS → COLUMNAS, ROW → FILA, COLUMN → COLUMNA, VLOOKUP → BUSCARV, INDEX → INDICE, MATCH → COINCIDIR, FILTER → FILTRAR, COUNTA → CONTARA, SEQUENCE → SECUENCIA. Los errores se muestran traducidos: #REF!#¡REF!, #VALUE!#¡VALOR!, #N/A#N/D. En los bloques de código de abajo mantenemos los nombres en inglés a propósito: funcionan en todas las versiones y son los términos por los que se busca.

ROWS y COLUMNS parecen trivialidades hasta que te das cuenta de cuánta lógica frágil y fijada a mano — "hay 3 columnas / los datos terminan en la fila 200" — sustituyen. Convierten un número fijo que un compañero romperá en un valor que Excel recalcula a partir del propio rango. El truco está en no confundirlas con sus primas en singular.

Lo que vas a aprender

  • El modelo mental: ROWS/COLUMNS miden tamaño, no posición
  • La trampa de una letra: por qué ROW(A1:A10) y ROWS(A1:A10) devuelven cosas distintas
  • El uso estrella: un índice de columna de VLOOKUP que sobrevive a columnas insertadas
  • Contar las filas que produjo una matriz dinámica o un FILTER
  • Encontrar la última fila / el punto medio de un rango sin fijarlo a mano
  • La trampa de la columna entera donde ROWS(A:A) supera el millón

El modelo mental: tamaño, no posición

El plural lo cuenta todo. ROW y COLUMN responden a ¿dónde está esta celda? — te devuelven una coordenada. ROWS y COLUMNS responden a una pregunta distinta: ¿qué tamaño tiene este bloque? — te devuelven un recuento. A ROWS(A1:A10) no le importa qué hay en el rango ni dónde está; informa de que el rango abarca 10 filas. COLUMNS(A1:C1) informa de 3 columnas.

Por eso ROWS(A1:C10) es 10, no 30: cuenta filas, y el rango tiene diez filas de alto por más que sea tres columnas de ancho. Las dos funciones son una cinta métrica para un rectángulo — una da la altura, la otra el ancho. Como sus primas en singular, no son volátiles, y miden con gusto una referencia de rango o una matriz literal (ROWS({1;2;3}) es 3), lo que las convierte en una forma barata y estable de pasar un tamaño a otra función.

La trampa de una letra: ROW vs ROWS

Esta es la confusión que merece la pena grabarte a fuego, porque falla en silencio dentro de las fórmulas matriciales:

=ROW(A1:A10)      ' -> {1;2;3;4;5;6;7;8;9;10}   una MATRIZ de posiciones (singular)
=ROWS(A1:A10)     ' -> 10                         un único RECUENTO (plural)

ROW en singular, dado un rango, devuelve un número por fila — una lista derramada de coordenadas. ROWS en plural devuelve un único total. En una celda normal la diferencia es obvia, pero mete la incorrecta en INDEX, SEQUENCE o un SUMPRODUCT y obtendrás una respuesta equivocada sin ningún error que te avise — SEQUENCE(ROW(data)) intenta construir una secuencia de la longitud equivocada, mientras que SEQUENCE(ROWS(data)) construye una fila por cada fila de datos, como se pretendía. Cuando quieres decir "cuántas", es el plural. Cuando quieres decir "cuál", es el singular.

El uso estrella: un índice de columna de VLOOKUP que nunca se rompe

Lo más valioso que hace COLUMNS es lograr que VLOOKUP sobreviva a las ediciones. El tercer argumento de VLOOKUP es un número fijo — devuelve la columna 2, o la 3, o la 4 — y ese número es justo lo que se rompe cuando alguien inserta una columna en la tabla. Sustitúyelo por COLUMNS y se recalcula:

=VLOOKUP($A2, Prices, COLUMNS($B$1:B$1), FALSE)   ' primera col de resultado -> índice 2
' arrastra a la derecha:  COLUMNS($B$1:C$1) -> 3,   COLUMNS($B$1:D$1) -> 4, ...

Ancla el borde izquierdo ($B$1) y deja que el derecho se desplace mientras arrastras: el rango se ensancha una columna en cada paso, así que COLUMNS cuenta 2, 3, 4… y le pasa a VLOOKUP un índice que sube solo. Como el índice ahora se deriva de la hoja en vez de escribirse, insertar una columna desplaza todo de forma coherente y las búsquedas siguen apuntando a los campos correctos. Esta es toda la razón de ser de las funciones en plural: un tamaño que se ajusta gana a un número que tienes que acordarte de arreglar. (En Excel 365, INDEX/MATCH o XLOOKUP se saltan el índice por completo — pero para los millones de VLOOKUP que ya andan sueltos por ahí, COLUMNS es el endurecimiento más barato que puedes añadir.)

Contar una matriz dinámica o un resultado filtrado

Envuelve ROWS alrededor de una fórmula derramada y obtienes "¿cuántas devolvió eso?" — a menudo de forma más directa que una variante de COUNT:

=ROWS(FILTER(Orders, Region="West"))    ' cuántos pedidos de la región Oeste coincidieron
=ROWS(UNIQUE(Customers))                 ' cuántos clientes distintos
=COLUMNS(A1#)                            ' qué ancho tiene un rango derramado (el operador #)

ROWS(FILTER(...)) responde a "cuántos registros cumplen la condición" midiendo el propio resultado — sin un COUNTIFS aparte que tengas que mantener sincronizado con los criterios del filtro. Apuntar ROWS/COLUMNS a una referencia de derrame (A1#) te dice las dimensiones vivas de una matriz dinámica según crece y encoge. El modelo mental se mantiene: estás midiendo el tamaño de lo que produjo la fórmula interna.

Última fila, punto medio y tamaño del rango sin fijarlo a mano

Como ROWS da la altura de un rango, es la forma limpia de llegar al último elemento o al medio de un rango que no para de cambiar de tamaño:

=INDEX(data, ROWS(data))            ' el ÚLTIMO valor de un rango de 1 columna
=INDEX(data, ROWS(data)/2)          ' aproximadamente el punto medio
=INDEX(data, ROWS(data)-1)          ' el penúltimo valor

INDEX(data, ROWS(data)) se lee como "el elemento en la posición recuento" — es decir, el último — y sigue siendo correcto cuando el rango crece, donde un INDEX(data, 200) fijo a mano se pierde en silencio las filas nuevas o apunta más allá del final. El fallo que ROWS previene es el recuento de filas escrito a mano que todos olvidan actualizar después de que los datos se expanden.

La trampa de la columna entera: ROWS(A:A) es 1.048.576

Un detalle que interiorizar: ROWS y COLUMNS cuentan el tamaño físico de lo que les des, no cuánto está relleno.

=ROWS(A:A)        ' -> 1048576   todas las filas de la columna existen, rellenas o no
=COLUMNS(A:A)     ' -> 1         la columna A tiene exactamente una columna de ancho
=COLUMNS(A:C)     ' -> 3

ROWS(A:A) es la altura completa de la hoja — más de un millón — porque la referencia es la columna entera. Eso casi nunca es "cuántas filas de datos tengo"; para eso quieres COUNTA (celdas no vacías) o un recuento por derrame/FILTER. Confundir la dimensión física de una referencia de columna entera con el recuento de filas usadas es la única forma en que estas funciones sorprenden a la gente — mantén separado "qué tamaño tiene esta referencia" de "cuánto está relleno".

El criterio a aplicar

Recurre a las formas en plural siempre que estés a punto de fijar una dimensión a mano. Un índice de VLOOKUP escrito como 4, un "los datos terminan en la fila 500" que un compañero invalidará la semana que viene, un "hay 12 meses a lo ancho" — cada uno es un ROWS/COLUMNS esperando a nacer, y cada uno se vuelve autoajustable en cuanto lo derivas del rango en lugar de escribirlo. El único peligro real es la confusión singular/plural: si tu fórmula empezó a devolver una matriz derramada sospechosamente larga donde esperabas un solo número, casi seguro escribiste ROW donde querías ROWS. Mide tamaños con el plural, lee posiciones con el singular, y los números fijados a mano desaparecen de tus modelos.

Cómo ayuda ExcelMaster

El índice de VLOOKUP basado en COLUMNS es esa clase de endurecimiento que la gente sabe que debería hacer y casi nunca se molesta en aplicar. Pídele a ExcelMaster "haz que este VLOOKUP sobreviva a columnas insertadas" y reescribe el tercer argumento como un COLUMNS($B$1:B$1) anclado que sube al arrastrar — u ofrece la versión INDEX/MATCH si estás en una compilación moderna. Pregunta "cuántas filas devolvió mi filtro" y envuelve el resultado en ROWS(...) en vez de atornillar un segundo COUNTIFS que tendrías que mantener sincronizado. Y si pegas una fórmula que confunde ROW y ROWS, detecta el desliz singular-frente-a-plural antes de que se convierta en un silencioso desfase de mil.

Preguntas frecuentes

¿Qué hace la función ROWS en Excel?

ROWS(matriz) devuelve el número de filas de un rango o matriz. =ROWS(A1:A10) devuelve 10, y =ROWS(A1:C10) también devuelve 10 porque el rango tiene diez filas de alto sin importar su ancho. Mide un tamaño, a diferencia de ROW, que devuelve el número de fila de una celda.

¿Cuál es la diferencia entre ROW y ROWS (y COLUMN vs COLUMNS)?

El plural cuenta, el singular localiza. ROWS(A1:A10) devuelve 10 (cuántas filas); ROW(A1:A10) devuelve la matriz {1;2;…;10} (el número de cada fila). Usa ROWS/COLUMNS cuando necesites un tamaño, y ROW/COLUMN cuando necesites una posición.

¿Cómo cuento el número de columnas de un rango?

Usa =COLUMNS(rango). =COLUMNS(A1:F1) devuelve 6. Para contar cuántas columnas de datos están realmente rellenas en una fila, combínalo con un COUNTA, pero para el ancho de un rango definido COLUMNS es exacto.

¿Cómo hace COLUMNS que una fórmula VLOOKUP sea más robusta?

Sustituye el tercer argumento fijado a mano de VLOOKUP por un COLUMNS($B$1:B$1) anclado. A medida que arrastras la fórmula a la derecha, el rango se ensancha y COLUMNS devuelve 2, 3, 4…, así que el índice de columna sube automáticamente y sigue funcionando cuando se insertan columnas — sin renumerar a mano.

¿Por qué ROWS(A:A) devuelve 1.048.576?

Porque una referencia de columna entera es todas las filas de la hoja, y las hojas de Excel tienen 1.048.576 filas. ROWS/COLUMNS informan del tamaño físico de la referencia, no de cuántas celdas están rellenas. Para el recuento de filas usadas, usa COUNTA(A:A) o un resultado de FILTER.

Probado en

Probado en: Excel 365 (Windows 11) — última verificación el 2026-07-13.

Guías relacionadas: Excel FILA y COLUMNA · Excel HIPERVINCULO · Excel BUSCARV · INDICE y COINCIDIR · Excel FILTRAR