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

Funciones ROW & COLUMN (FILA & COLUMNA) en Excel — Obtén la posición de una celda, no su valor

|

Funciones ROW & COLUMN (FILA & COLUMNA) en Excel — Obtén la posición de una celda, no su valor

En resumenROW([referencia]) devuelve el número de fila de una celda, y COLUMN([referencia]) devuelve su número de columna — una posición, no el valor almacenado allí. ROW(A10) es 10; COLUMN(C1) es 3. Omite el argumento y cada una devuelve la coordenada de la celda que contiene la fórmula: =ROW() en la celda A5 es 5. Esa única idea — estas funciones leen una dirección, no un valor — impulsa todo lo útil que hacen: números de serie que se renumeran solos cuando insertas una fila, sombreado tipo cebra con MOD(ROW(),2), y la posición que alimenta a INDEX y a las fórmulas matriciales.

=ROW()                        ' -> 5     la fila en la que está esta fórmula (aquí, la fila 5)
=ROW(A10)                     ' -> 10    el número de fila de A10 (no su contenido)
=COLUMN()                     ' -> 3     la columna en la que está esta fórmula (col C)
=COLUMN(D1)                   ' -> 4     D es la 4ª columna
=ROW()-ROW($A$2)+1            ' -> 1,2,3 número de serie autorreparable, anclado en A2
=MOD(ROW(),2)=0               ' -> TRUE/FALSE  una fila sí y otra no, para el sombreado

Nota — nombres de funciones en Excel en español. En la interfaz en español, las funciones aparecen así: ROW → FILA, COLUMN → COLUMNA, MOD → RESIDUO, INT → ENTERO, INDEX → INDICE, MATCH → COINCIDIR, ADDRESS → DIRECCION, SUBSTITUTE → SUSTITUIR, OFFSET → DESREF, INDIRECT → INDIRECTO, FILTER → FILTRAR, 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.

ROW y COLUMN son las dos funciones que la gente usa sin llegar nunca a decidir aprenderlas — copias una fórmula de número de serie de internet, funciona, y sigues adelante. Pero responden a una pregunta que ninguna otra función responde: dónde está esta celda, y qué tamaño tiene este rango. Separa en tu cabeza "la posición de una celda" de "el valor de una celda" y se te abre toda una categoría de fórmulas dinámicas que se autoajustan.

Lo que vas a aprender

  • El modelo mental: ROW y COLUMN devuelven coordenadas, no el contenido de las celdas
  • Por qué ROW() a secas devuelve la propia fila de la fórmula — y por qué esa es la parte útil
  • La confusión número uno: ROW(C10) es 10, no el valor de C10
  • Números de serie autorreparables con ROW()-ROW(ancla)+1
  • Sombreado y lógica de cada n filas con MOD(ROW(), n)
  • La trampa letra-vs-número de COLUMN, y ROW como motor oculto dentro de INDEX

El modelo mental: coordenadas, no contenido

Casi todas las funciones de Excel leen lo que hay dentro de las celdas — SUM suma sus valores, VLOOKUP busca un valor, TEXT reformatea uno. ROW y COLUMN son el par raro que ignora por completo el contenido e informa de la dirección: qué fila, qué columna. Piénsalas como una celda que pregunta "¿dónde estoy en la cuadrícula?" en lugar de "¿qué contengo?".

Ambas admiten una referencia opcional. ROW(A10) devuelve 10 porque A10 está en la fila 10; COLUMN(C1) devuelve 3 porque C es la tercera columna. Omite el argumento y la función informa de su propia ubicación=ROW() escrita en A5 devuelve 5, y devolverá 6 en cuanto la arrastres una celda hacia abajo. Esa autorreferencia no es una rareza que haya que sortear; es justamente el objetivo, y es lo que hace útil a ROW como contador.

Una tranquilidad de entrada: a diferencia de OFFSET e INDIRECT, ROW y COLUMN no son volátiles. No se recalculan con cada pulsación de tecla, así que puedes esparcir miles de ellas por un modelo sin la ralentización que traen esas dos funciones de referencia.

ROW() a secas devuelve la propia fila de la fórmula

Escribe =ROW() en cualquier celda y obtienes el número de la fila en la que vive. Arrástrala hacia abajo y los resultados van subiendo — 2, 3, 4, … — porque cada copia informa de su propia nueva fila. Este es el mecanismo que hay detrás de casi todas las recetas de "numera mis filas automáticamente".

=ROW()      ' en A2 -> 2, en A3 -> 3, en A4 -> 4  (cada copia informa de su propia fila)
=COLUMN()   ' en B1 -> 2, en C1 -> 3, en D1 -> 4  (COLUMN cuenta a lo ancho)

El inconveniente con el que chocarás enseguida: si tus datos empiezan en la fila 2 (porque la fila 1 es un encabezado), =ROW() te da 2, 3, 4 — desfasado en uno. Eso no es un error de ROW; es ROW diciéndote la verdad literal sobre dónde está. La solución es anclarla, que es la siguiente sección.

La confusión nº1: ROW(referencia) es una posición, no un valor

Aquí está el error que manda a la gente a los buscadores: escriben =ROW(C10) esperando el contenido de C10 y obtienen 10 en su lugar.

=ROW(C10)      ' -> 10   el NÚMERO DE FILA de C10, nunca lo que hay guardado en C10

A ROW se le preguntó "¿en qué fila está C10?" y respondió con honestidad: la fila 10. Nunca mira dentro de la celda. Si quieres el valor en una posición calculada, ese es el trabajo de INDEXINDEX toma un número de fila (a menudo uno que produjo ROW o MATCH) y devuelve el contenido. Mantén la división nítida: ROW/COLUMN encuentran la coordenada; INDEX convierte una coordenada en un valor. Casi toda pregunta del tipo "ROW no devuelve lo que esperaba" se disuelve en cuanto sostienes esa línea.

Números de serie autorreparables: ROW() menos un ancla

El uso más valioso de ROW, sin discusión, es un número de serie que sobrevive a filas insertadas y eliminadas. Un 1, 2, 3 escrito a mano se rompe en el instante en que alguien inserta una fila en medio; un número basado en ROW simplemente se renumera solo.

=ROW()-ROW($A$2)+1     ' en la fila donde empiezan los datos (A2), esto es 1; A3 -> 2; A4 -> 3
=ROW()-1               ' atajo cuando tu encabezado es exactamente la fila 1

Léelo a través del modelo mental: ROW() es esta fila, ROW($A$2) es la fila fija donde empieza tu lista, y restar da el desplazamiento desde el inicio; +1 lo hace de base 1. Como el ancla es una referencia absoluta ($A$2), se queda quieta cuando copias hacia abajo, y como ROW vuelve a leer la posición viva, insertar una fila en cualquier punto de la lista renumera todo lo que hay debajo automáticamente. Ese es el fallo que existe para matar: series manuales que en silencio pasan a 1, 2, 3, 3, 4 tras una inserción y nadie lo nota hasta una auditoría.

Sombreado y agrupación: MOD(ROW(), n)

Alimenta ROW a MOD y se convierte en un generador de ritmo — una forma de hacer algo cada n filas. El clásico es el sombreado tipo cebra en el formato condicional:

=MOD(ROW(),2)=0            ' TRUE en filas pares -> sombrea una fila sí y otra no
=MOD(ROW()-2,3)=0          ' TRUE cada 3ª fila, contando desde el inicio de los datos (fila 2)
=INT((ROW()-2)/3)+1        ' -> 1,1,1,2,2,2,3,3,3  número de grupo, 3 filas por grupo

MOD(ROW(),2) alterna 1,0,1,0…; comprobar =0 te da una fila sí y otra no para el bandeado. El fallo aquí es el mismo desfase de uno que en los números de serie: si tu tabla no empieza en la fila que supusiste, resta un ancla (ROW()-2) para que el patrón empiece donde empiezan tus datos, no donde empieza la hoja. Acierta con el ancla y una sola fórmula sombrea o agrupa una tabla de cualquier longitud.

COLUMN: la gemela horizontal, y la trampa letra-vs-número

Todo lo anterior vale para COLUMN, girado 90°. COLUMN() informa de la propia columna de la fórmula; COLUMN(D1) es 4. Su uso estrella es una serie que cuenta a lo ancho a medida que arrastras a la derecha — para construir secuencias horizontales o alimentar un índice incremental:

=COLUMN()-COLUMN($B$1)+1   ' arrastrada a la derecha desde B: 1, 2, 3, 4 ...

La trampa que pilla a todo el mundo: COLUMN devuelve un número, no una letra. La columna C es 3, no "C". Si de verdad necesitas la letra (para construir una dirección de texto, por ejemplo), COLUMN por sí sola no lo hará — recurre a ADDRESS, que puede devolverte $C$1, y extrae las partes que quieras. Confundir el número de columna con la letra de columna es el origen de la mayoría de las frustraciones con COLUMN; son tipos de dato distintos para trabajos distintos.

ROW como motor matricial para INDEX y SMALL(IF())

Dale a ROW un rango en lugar de una sola celda y devuelve una matriz de números de fila, uno por fila — ROW(A1:A5) es {1;2;3;4;5}. Esa matriz derramada es el motor silencioso dentro de muchas fórmulas avanzadas.

=INDEX($D$2:$D$100, ROW()-1)          ' extrae el N-ésimo elemento de la lista, fila a fila
=SMALL(IF(status="Open", ROW(status)), k)   ' el número de fila del k-ésimo registro "Open"
=SEQUENCE(ROWS(data))                  ' el equivalente moderno, compatible con el derrame

El modismo SMALL(IF(condición, ROW(rango)), k) — reúne los números de fila donde una condición es verdadera, y luego elige el k-ésimo más pequeño — fue durante años la forma de "devolver todas las coincidencias, no solo la primera" antes de las matrices dinámicas. En Excel 365 normalmente recurrirías a FILTER o SEQUENCE en su lugar, pero seguirás encontrándote el patrón de matriz de ROW en libros heredados, y saber que ROW(rango) está generando una lista de posiciones es lo que hace que esas fórmulas sean legibles en vez de mágicas.

El criterio a aplicar

La sintaxis es trivial — ROW para un número de fila, COLUMN para un número de columna, quita el argumento para decir "aquí". El criterio está en saber que estás ante un problema de posición, no de valor. La señal: siempre que estés a punto de escribir a mano una secuencia (1, 2, 3…), una regla de "sombrea una fila sí y otra no", o un índice incremental que un compañero inevitablemente romperá al insertar una fila — eso es trabajo para ROW/COLUMN, y anclarlo a una referencia absoluta hace que se autorrepare. Y en el momento en que te pilles esperando que ROW(C10) te dé el contenido de C10, para: lo que quieres es INDEX, para convertir esa posición en un valor. Sostén la línea posición-frente-a-valor y estas dos funciones pequeñas vuelven robustas tus hojas sin hacer ruido.

Cómo ayuda ExcelMaster

El anclaje es justo la parte delicada que las fórmulas con ROW hacen mal. Pídele a ExcelMaster "una columna de número de fila que siga siendo correcta cuando inserto filas" y escribe =ROW()-ROW($A$2)+1 anclado a tu fila de encabezado real, no una copiada y pegada que está desfasada por la cantidad equivocada. Pídele "sombrea una de cada tres filas" y te devuelve la regla MOD(ROW()-ancla, 3) correcta para un rango de formato condicional que empieza donde empiezan tus datos. Y cuando describes un problema de valor en lenguaje de posición — "dame el valor 5 filas más abajo" — reconoce que eso es trabajo de INDEX y no te entrega un ROW que devuelve un número que no querías.

Preguntas frecuentes

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

ROW([referencia]) devuelve el número de fila de una celda. =ROW(A10) devuelve 10. Si omites la referencia, devuelve el número de fila de la celda que contiene la fórmula, así que =ROW() en la celda B7 devuelve 7. Informa de una posición en la cuadrícula — nunca devuelve el valor almacenado en la celda.

¿Cómo obtengo el número de fila de la celda actual?

Escribe =ROW() sin argumento en la celda; devuelve el número de fila de esa misma celda. Igualmente, =COLUMN() devuelve su propio número de columna. Para numerar una lista empezando en 1 sin importar dónde comience, resta un ancla: =ROW()-ROW($A$2)+1 devuelve 1 en la fila que contiene A2, 2 en la siguiente, y así sucesivamente.

¿Por qué ROW devuelve un número en lugar del valor de la celda?

Porque ese es su trabajo — ROW informa de dónde está una celda, no de qué hay dentro. =ROW(C10) devuelve 10 (C10 está en la fila 10). Para traer el valor en una posición calculada, pasa el número de fila a INDEX, p. ej. =INDEX(D:D, ROW(C10)) devuelve el contenido de D10.

¿Cuál es la diferencia entre ROW y ROWS?

ROW (singular) devuelve una posición — el número de fila de una celda. ROWS (plural) devuelve un recuento — cuántas filas hay en un rango: ROWS(A1:A10) es 10. El singular es una coordenada; el plural es un tamaño. Consulta Excel ROWS & COLUMNS.

¿Cómo hace COLUMN para devolver una letra en lugar de un número?

No lo hace — COLUMN siempre devuelve un número (la columna C es 3, no "C"). Para obtener la letra de columna, usa ADDRESS, p. ej. =SUBSTITUTE(ADDRESS(1, COLUMN(), 4), "1", "") extrae la parte de la letra. Consulta Excel ADDRESS.

Probado en

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

Guías relacionadas: Excel FILAS y COLUMNAS · Excel HIPERVINCULO · INDICE y COINCIDIR · Excel DIRECCION · Excel DESREF