Excel 2007: formato condicional para que cada fila muestre valores bajos en amarillo, valores altos en rojo

14

Tengo una hoja de cálculo con aproximadamente 300 filas. Cada fila tiene aproximadamente 15 columnas, y cada celda contiene un valor numérico. Cada fila corresponde a un producto.

Quiero obtener Excel, para cada producto, para resaltar las celdas con los números más altos en rojo y los números más bajos en amarillo, con un gradiente para los números intermedios. Esto es lo que sucede si selecciono una fila (específicamente, las 15 celdas de la fila que contienen mis datos) y luego hago clic en Formato condicional> Escalas de color> Escala de color rojo-amarillo.

Sin embargo, tengo 300 filas y tomará mucho tiempo seleccionar cada fila individualmente y establecer el Formato condicional. Por otro lado, si selecciono todo el rango y aplico Formato condicional, Excel calcula los colores en función del rango completo, cuando en realidad quiero que se calculen fila por fila. Por ejemplo, tome estos datos de muestra:

1 2 3
4 5 6
7 8 9

La salida que quiero, usando Y para amarillo, O para naranja, R para rojo, es:

Y O R
Y O R
Y O R

Sin embargo, si selecciono todo el rango y aplico Formato condicional, obtengo:

Y Y Y
O O O
R R R

¿Hay alguna manera de lograr esto sin hacerlo una fila a la vez?

Michael Pavey
fuente
@wizlog: Eso es correcto. El valor más alto en una fila debe ser rojo, el valor más bajo en esa fila debe ser amarillo, y los otros valores deben estar en algún punto intermedio (cuanto más cercano al valor más alto, más rojo).
Michael Pavey
Me gusta esta pregunta ... Veré si puedo encontrar una respuesta ...
Probablemente pasarán
Me gusta esta pregunta también. Pero no veo otra forma de abordar esto que no sea usar una macro. Sin embargo, espero que alguien demuestre que estoy equivocado.
Ellesa

Respuestas:

15

Aquí hay una macro que crea un formato condicional para cada fila en su selección. Lo hace copiando el formato de la primera fila a CADA fila de la selección (una por una, no del todo). Reemplace B1: P1 con la referencia a la primera fila de su tabla de datos.

Sub NewCF()
    Range("B1:P1").Copy
    For Each r In Selection.Rows
        r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
End Sub

Para usar, resalte las filas sin formato en su conjunto de datos (en mi caso, B2: P300 ) y luego ejecute la macro. En el siguiente ejemplo, tenga en cuenta que los números máximos en las dos primeras filas son 5 y 15 , respectivamente; Ambas células son de color rojo oscuro .

Sin embargo, estoy seguro de que hay una solución más rápida que esta.

ingrese la descripción de la imagen aquí

Ellesa
fuente
1
Gracias, esto funcionó muy bien. También es un gran ejemplo del valor de pedir ayuda cuando no estoy seguro ... Me había desanimado la idea de usar una macro, ya que supuse que tendría que aprender a configurar el formato condicional desde cero. Obtener la macro solo para copiar el formato existente es mucho más astuto :)
Michael Pavey
@MichaelPavey ¡Me alegra haber podido ayudar! ¡Y bienvenido a Superusuario! :)
Ellesa
1
+ 1. Si alguien está interesado, llevé este concepto más allá en mi blog: yoursumbuddy.com/conditional-formatting-per-row-color-scales
Doug Glancy
Es ridículo que este tipo de cosas no esté integrado en Excel como una característica. ¿Es tan raro querer comparar filas de esta manera?
Alex
5

La forma más fácil de lograr esto es copiar / pegar de forma incremental. Primero, formatee 1 fila como lo desee. Luego copie y pegue el formato solo a una segunda fila. Ahora copie AMBAS filas 1 y 2 y pegue el formato en las filas 3 y 4. Enjuague y repita, Copie 4, 4 anteriores, copie 8, pegue 8, copie 16, pegue 16. Una vez que tenga una cantidad decente como 16, péguelo varias veces para obtener hasta 64 o 128. Luego puede copiarlos y pegar su formato, y está cubriendo exponencialmente más territorio que antes.

No es elegante, y en mi experiencia, los recursos necesarios para formatear condicionalmente las filas de comer comienzan a maximizarse alrededor de 2500 filas ... pero hace el trabajo.

Solo desearía que hubiera lógica que no creara un formato condicional separado para cada fila, acaparando recursos ...

Poultron
fuente
Creo que el OP dijo "Sin embargo, tengo 300 filas y tomará mucho tiempo seleccionar cada fila individualmente y establecer el Formato condicional". en la pregunta
Prasanna
@ Poultron, gracias! Para agregar a esto: Usando Ctrl / Cmd + Shift + Arriba / derecha, puede seleccionar fácilmente todas las filas y columnas anteriores, por lo que no necesita contar las filas anteriores. Luego, cuando esté listo para pegar, simplemente coloque el cursor en la primera celda debajo de las filas ya formateadas y solo Formato de pegado especial, se extenderá para cubrir tantas filas como se hayan copiado. Ctrl / Cmd + Shift + V también recordará la última pasta especial que desea usar, por lo que todo el proceso transcurre bastante rápido. Solo lo usé en dos hojas de cálculo con 600 filas cada una.
Oskar Austegard
Hice esto en una mesa con ~ 100 filas y funcionó muy bien. Solo tomó 7 iteraciones de Format Painter.
mskfisher
0

Acabo de encontrar este y otros ejemplos de cómo hacer esto a través de VBA y me hizo pensar y descubrí una forma relativamente rápida e indolora de hacer lo mismo sin tener que saber ni copiar ningún script.

Aplique el formato condicional deseado a la fila que desee y luego resalte la fila completa. Haga clic con el botón derecho en cualquier lugar a lo largo del borde (el mouse debe ser el ícono Mover) y arrastre hacia abajo a la siguiente fila. En el menú contextual que aparece, seleccione "Copiar aquí solo como formatos". Ahora debería tener su formato condicional aplicado a ambas filas por separado. Luego continúe haciendo esto de manera recursiva, excepto que ahora puede seleccionar y copiar 2 o más filas a la vez.

No es un trato único como el código anterior, pero es exponencialmente más rápido que hacer una línea a la vez. Espero que esto ayude.

Chris S
fuente
0

También puede aplicar el formato de condición a una fila. Vuelva a resaltar la fila y haga doble clic en "Copiar formato" para bloquearla. Use la tecla de flecha hacia abajo para aplicar la condición a otras filas.

Para mi empresa generalmente bloquea macro en Excel, así que esto funciona para mí. Espero que te ayude también.

Genx
fuente