Colorear la fila entera según el técnico asignado: la referencia mixta que casi nadie aplica bien

Esta semana surgió una duda que parece de principiante y en realidad esconde el concepto peor entendido del formato condicional.

Johann Frare tiene un parte de reportes con una columna de técnico asignado (columna I, alimentada por una lista desplegable) y quiere que la fila entera se coloree según quién sea el técnico, con un color distinto para cada uno. Los nombres viven en otra hoja. Y hay una restricción que condiciona todo el hilo: en su empresa trabaja con Excel 2013, así que nada de funciones modernas.

Leo fue desmontando el problema en cuatro piezas, y ninguna de las cuatro era la que Johann esperaba.

El formato condicional no necesita SI. La regla se dispara con cualquier VERDADERO, y también con cualquier número distinto de cero. Envolver la condición en un SI(a=b;VERDADERO;FALSO) es escribir de más: la comparación ya devuelve exactamente eso. Es el primer atasco de casi todo el mundo, y Johann lo reconoce en el hilo: "no tenía ni la más mínima idea de que lo que valía es que fuese verdadero o falso".

Lo que pinta la fila entera no está en la fórmula. Está en dos sitios a la vez: en el rango sobre el que aplicas la regla y en dónde pones el dólar. Si aplicas el formato sobre todo el bloque ($A$2:$K$2000) y anclas solo la columna, Excel recorre fila a fila mirando siempre la misma columna, y cuando encuentra un VERDADERO colorea la fila completa. Con la referencia mixta $I2, el dólar a la izquierda es lo único que separa "se pinta una celda" de "se pinta la fila". Para comprobar la pertenencia a la lista de la otra hoja:

``
=ESNUMERO(COINCIDIR($I2;'Hoja para las listas'!$F$4:$F$20;0))
`

Raúl Ramos remató el matiz que faltaba, y es un matiz de interfaz, no de fórmula: el rango de aplicación se indica en el cuadro de diálogo, no dentro de la expresión.

Y hay una versión más corta. El propio Leo se relee un rato después y propone una alternativa sobre la misma idea:

`
=O(CONTAR.SI($I2;'Hoja para las listas'!$F$4:$F$23))
`

Combinar condiciones sin escribir Y ni O. Como el formato condicional solo mira si el resultado es distinto de cero, se puede hacer aritmética con los booleanos. Multiplicar equivale a exigir las dos condiciones, sumar equivale a pedir al menos una:

`
=($I2="RICARDO")($H2="ATENDIDO")
=($I2="RICARDO")+($H2="ATENDIDO")
`

La primera es un Y y la segunda un O.

Aquí llega el problema de fondo: para un color por técnico hace falta una regla por técnico. Con tres da igual, con quince es inasumible a mano. Y Leo cierra el hilo con un libro que las genera solo.

La macro lee dos rangos con nombre (lista_tecnicos y lista_colores), y el detalle bueno es cómo obtiene el color: no se escribe ningún código de color en ninguna parte, se lee el relleno real de las celdas con Interior.Color. El usuario elige los colores pintando celdas, que es como piensa un usuario de Excel. Cada regla se crea con StopIfTrue = False para que convivan sin taparse entre sí.

`
Sub Formatos()
Dim rngDestino As Range, clientes As Range, colores As Range
Dim i As Long, cliente As String, color As Long
Dim fc As FormatCondition, formula As String

Set clientes = ThisWorkbook.Names("lista_tecnicos").RefersToRange
Set colores = ThisWorkbook.Names("lista_colores").RefersToRange
Set rngDestino = Range("A2:AE1000")

rngDestino.FormatConditions.Delete

For i = 1 To clientes.Cells.Count
cliente = CStr(clientes.Cells(i).Value)
If Len(cliente) > 0 Then
color = colores.Cells(i).Interior.Color
formula = "=$I2=""" & Replace(cliente, """", """""") & """"
Set fc = rngDestino.FormatConditions.Add( _
Type:=xlExpression, Formula1:=formula)
With fc
.Interior.Color = color
.StopIfTrue = False
End With
End If
Next i
End Sub
`

Una nota de transparencia que el propio Leo puso encima de la mesa: la macro la generó con ayuda de IA y la adaptó al proyecto de Johann. Lo decimos porque lo dijo él, y porque el mérito real está en saber qué pedir y qué corregir después.

Todo lo del hilo funciona en Excel 2013. Ni una función moderna, ni un rango desbordado. A veces la restricción es lo que obliga a entender el mecanismo de verdad.

El fichero adjunto incluye el libro del planteamiento y el libro de Leo con la macro. En este último, el código está en la ficha Programador, Visual Basic, doble clic sobre Hoja1.

---

Ampliación (30 de agosto de 2026): el dólar no decide qué se pinta, decide hacia dónde se barre

Una semana después, el mismo concepto volvió al grupo por la puerta grande, y esta vez con la mitad que faltaba.

Leo compartió las cinco reglas de formato condicional que usó en su presentación de Valencia, un informe donde el usuario puede marcar uno o varios campos a la vez en filas y en columnas de una tabla dinámica. Otro miembro de la comunidad le pidió la lógica de las dos últimas, y la respuesta reordena todo lo anterior.

Arriba dijimos que anclar la columna ($I2) es lo que pinta la fila entera. Es cierto, pero es un caso particular de algo más general: el dólar decide en qué dirección barre Excel la matriz. Sobre el mismo rango y con la misma comprobación, las tres formas de referencia hacen tres recorridos distintos:

`
=B$8="" → fila anclada: barre en HORIZONTAL, mira siempre la fila 8
=$B8="" → columna anclada: barre en VERTICAL, mira siempre la columna B
=B8<>"" → relativa: recorre TODA la matriz, celda a celda
`

En palabras del propio Leo: "B$8 barre por horizontal y busca si es vacío, $B8 barre por vertical y busca si es vacío, el otro, B8, barre toda la matriz y comprueba si no es vacío."

Con eso montado, las reglas se leen solas. Estas son las cinco del informe, en orden:

`
=B8
=($B8="Total")(B$8<>0)
=(B$8="Total")($B8<>0)
=(B$8="")(B8<>"")
=($B8="")(B8<>"")
`

Fíjate en el patrón: las reglas van por parejas simétricas. Una ancla la fila y otra ancla la columna, con el resto idéntico. Esa simetría es exactamente lo que permite pintar las cabeceras del eje horizontal y las del eje vertical de un pivot que crece en las dos direcciones, sin saber de antemano cuántos campos habrá marcado el usuario en cada eje.

Y aquí es donde engarza la aritmética de booleanos de más arriba. Cada regla multiplica dos barridos distintos sobre la misma matriz: uno que localiza la cabecera (vacía, o con el texto "Total") y otro que confirma que la celda tiene contenido. El exige que se cumplan los dos, y el resultado 1 o 0 es lo que dispara el formato.

Leo lo demostró en el hilo con una hoja de comprobación: las columnas de VERDADERO y FALSO de cada variante puestas una al lado de otra, y el producto en 1 y 0. Al seleccionar tres conceptos en el campo de filas del pivot, se ve cómo las tres primeras columnas salen todas VERDADERO porque el barrido horizontal desde B8 va buscando dónde está vacío.

Un apunte para quien venga de la primera parte del caso: la regla =B8`, sin comparación ninguna, es del todo válida. Vuelve el principio del hilo original, el que a Johann le costó ver: la regla no necesita devolver VERDADERO, le basta con devolver cualquier cosa distinta de cero.

Por qué tu formato condicional pinta una celda y no la fila

Es probablemente la frustración más repetida con el formato condicional de Excel: escribes la regla, la condición es correcta, y Excel te colorea una sola celda cuando lo que querías era la fila entera. La reacción natural es tocar la fórmula. Y ahí es justo donde no está el problema.

Este caso salió del chat de la comunidad de Influexcel, y tiene además una restricción que lo hace especialmente útil: todo se resuelve con Excel 2013. Ni matrices dinámicas, ni LET, ni LAMBDA. Solo el mecanismo, bien entendido.

El problema

Un parte de reportes con una columna de técnico asignado, alimentada por una lista desplegable. La lista de técnicos vive en otra hoja. El objetivo: que cada fila se coloree según el técnico que la tenga asignada, con un color distinto por persona.

Dos capas de dificultad, entonces. Primero conseguir que se pinte la fila y no la celda. Y después conseguir un color por técnico sin volverse loco.

Solución paso a paso

El SI sobra

Una regla de formato condicional se dispara cuando la fórmula devuelve VERDADERO, y también cuando devuelve cualquier número distinto de cero. Una comparación como $I2="RICARDO" ya devuelve VERDADERO o FALSO por sí sola. Envolverla en SI(...;VERDADERO;FALSO) es pedirle a Excel que traduzca algo a su propio idioma.

Donde sí está el truco: el rango y el dólar

Aquí van las dos piezas que de verdad deciden si se pinta una celda o una fila:

  1. El rango de aplicación. La regla se aplica sobre el bloque completo, $A$2:$K$2000, no sobre la columna del criterio. Y esto se indica en el cuadro de diálogo del formato condicional, no dentro de la fórmula.
  2. La referencia mixta. Escribes $I2, con el dólar únicamente delante de la columna. Al anclar la columna y dejar la fila libre, Excel recorre el bloque fila a fila mirando siempre la columna I. Cuando encuentra un VERDADERO, pinta esa fila entera.

Cambiar $I2 por I2 o por $I$2 rompe el efecto por completo, y la fórmula sigue estando bien escrita. De ahí que sea tan difícil de depurar: no hay error, hay un resultado silenciosamente distinto.

Para comprobar la pertenencia a una lista alojada en otra hoja:

=ESNUMERO(COINCIDIR($I2;'Hoja para las listas'!$F$4:$F$20;0))

COINCIDIR devuelve la posición si encuentra el valor y un error si no, y ESNUMERO convierte esa respuesta en el VERDADERO o FALSO que la regla necesita.

Existe una variante más corta apoyada en la misma idea:

=O(CONTAR.SI($I2;'Hoja para las listas'!$F$4:$F$23))

Combinar condiciones con aritmética

Como la regla solo mira si el resultado es distinto de cero, se pueden operar los booleanos directamente:

=($I2="RICARDO")*($H2="ATENDIDO")
=($I2="RICARDO")+($H2="ATENDIDO")

Multiplicar exige que se cumplan las dos condiciones, igual que Y. Sumar pide que se cumpla al menos una, igual que O. Conviene tener presente que la suma puede devolver 2 cuando ambas se cumplen, y 2 sigue siendo distinto de cero, así que el comportamiento es el esperado.

El dólar decide la dirección del barrido

Anclar la columna para pintar la fila es en realidad un caso particular de algo más general, y entenderlo así abre la puerta a informes bastante más ambiciosos. Sobre el mismo rango y con la misma comprobación, las tres formas de referencia hacen tres recorridos distintos de la matriz:

  • B$8 ancla la fila: barre en horizontal, mirando siempre la fila 8.
  • $B8 ancla la columna: barre en vertical, mirando siempre la columna B.
  • B8, relativa, recorre toda la matriz, celda a celda.

Con eso se pueden escribir reglas por parejas simétricas: una ancla la fila y la otra ancla la columna, con el resto idéntico. Es exactamente lo que hace falta para pintar a la vez las cabeceras del eje horizontal y las del eje vertical de una tabla dinámica en la que el usuario puede marcar uno o varios campos en cada eje, sin saber de antemano cuántos serán.

=(B$8="")*(B8<>"")
=($B8="")*(B8<>"")

Cada una multiplica dos barridos distintos sobre la misma matriz: uno localiza la cabecera y el otro confirma que la celda tiene contenido.

Un color por técnico: una regla por técnico

Y aquí aparece el muro. El formato condicional no sabe asignar colores en función del contenido: cada color necesita su propia regla. Con tres técnicos es tedioso, con quince es inviable a mano, y cada alta o baja obliga a repasarlo todo.

La solución que cerró el hilo fue una macro que genera las reglas automáticamente. Lee dos rangos con nombre, uno con los técnicos y otro con los colores, y crea una regla por cada nombre de la lista.

El detalle mejor pensado es de dónde saca el color: del relleno real de las celdas, con Interior.Color. No hay que escribir códigos de color en ninguna parte. Quien mantiene el libro elige los colores pintando celdas, que es exactamente como piensa un usuario de Excel. Cada regla se crea además con StopIfTrue = False, para que puedan convivir sin que la primera que se cumpla tape a las siguientes.

Funciones clave

  • COINCIDIR: devuelve la posición de un valor dentro de un rango, o un error si no lo encuentra. La pieza que permite consultar una lista de otra hoja.
  • ESNUMERO: convierte el resultado de COINCIDIR en VERDADERO o FALSO, que es lo que consume la regla.
  • CONTAR.SI: alternativa más breve para el mismo test de pertenencia.
  • O y Y: combinan condiciones, y en formato condicional pueden sustituirse por suma y multiplicación de booleanos.
  • Referencia mixta $I2 y B$8: no son funciones, pero son el concepto central del caso. Dónde pongas el dólar decide en qué dirección barre Excel la matriz, y por tanto si pintas una celda, una fila o una columna.

Conclusión

La lección que deja este caso es que el formato condicional se configura en dos sitios a la vez, la fórmula y el cuadro de diálogo, y que la mitad de los fallos vienen de mirar solo el primero. La referencia mixta es el puente entre ambos, y una vez entiendes que lo que controla es la dirección del barrido, dejas de escribir reglas a base de prueba y error.

Y merece la pena subrayar lo otro: todo esto funciona en Excel 2013. Cuando no puedes tirar de las funciones nuevas, no queda más remedio que entender el mecanismo, y ese conocimiento no caduca con la versión.

Casos como este nacen de problemas reales que alguien plantea en el chat de la comunidad de Influexcel, donde en unas horas suelen aparecer varios enfoques distintos para el mismo atasco.

Más contenido de Excel en InflueXcel