2011-04-19 14 views
5

Supongamos que tengo la siguiente estructura de la tabla (A1: C3)Excel 2007/2010 del color de formato condicional escala basada en la fórmula

 A B C 
1 H1 H2 H3 
2 1 1 3 
3 4 5 4 

¿Cómo puedo aplicar un formato condicional con las siguientes condiciones:

    son de color
  • Sólo las células de cabecera (H1, H2, H3)
  • el esquema de colores es 2 o 3-escala colorimétrica
  • los valores utilizados para calcular el color debe ser A2/A3, B2/B3, C2/C3 (El rango es 0-1)

Nota: No estoy buscando una solución de VBA, como puedo hacer mi propio, pero si usted tiene un poco loco 1 forro informe a :)
Nota : No quiero aplicar muchas reglas como if x<0.3 red, if 0.3<x<0.6 orange etc.

¿Hay alguna solución limpia para esto?
¿Se puede aplicar una escala de 3 colores en función del valor de una fórmula?

+0

¿Estás preguntando si se trata de posible tener formato condicional sin tener condiciones? –

+0

No, estoy preguntando si el formato condicional, usando un estilo de escala de 3 colores es posible junto con las fórmulas; así que en lugar de colorear en función del valor de la celda, podría colorear en función del resultado de una fórmula que involucre otras celdas –

+0

También aceptaré una secuencia de comandos de VBA, si es muy corta. Estoy buscando un truco rápido y sucio :) Sé cómo escribir una solución larga iterando sobre todos los encabezados, calculando el color ... pero solo por diversión, quiero ver algunas soluciones inteligentes: D –

Respuesta

1

Creo que estás buscando algo ingenioso que desafortunadamente no existe. Solo veo las dos opciones.

Puede hacer el formateo condicional con tres condiciones, o incluso solo dos si desea usar el color de celda predeterminado como uno de los tres (por ej. Fórmula Is = (A2/A3) < 0.3, Fórmula Is = (A2/A3) < 0.6, o lo que sea que desee que sean sus valores de umbral). Puede aplicar este fomatting manualmente en una celda de encabezado en Excel y copiarlo en todos los encabezados; o aplicarlo a través de VBA.

O puede colorear los encabezados en VBA, y colocar un botón en su hoja que llame al código para actualizar los colores.

With Range("A1") 
    For i = 1 To 3 
     colorscale = .Cells(2, i).Value/.Cells(3, i).Value 
     .Cells(1, i).Interior.Color = _ 
      RGB(colorscale * 255, colorscale * 255, _ 
      colorscale * 255) ' for example. Or pick your colors otherwise. 
    Next i 
End With 

me suena como la primera opción (formato condicional) se adapta mejor, porque va a actualizar los colores automáticamente en función de los valores de las celdas. Debo admitir, sin embargo, que no entiendo por qué estás buscando algo "más limpio" que esto, porque en realidad es una solución realmente simple. ¿Dos condiciones constituyen "muchas reglas"? No por cualquier tramo de la lengua Inglés ...

+0

No son solo dos reglas . Quiero ver el gradiente completo de rojo-amarillo-verde basado en el resultado, que puede ser cualquier fracción de subunidad. Esperaba de alguna manera poder calcular este gradiente usando API directa, pero no creo que haya algo que haga eso. –

+0

Aha. Por "escala de 2 o 3 colores", pensé que se refería a una escala con dos o tres colores posibles. Usted solo quiso decir RGB. –

0

Aquí es una adaptación del código de Jean-François Corbett que toma el color de un gradiente de color rojo-amarillo-verde:

With Range("A1") 
    For i = 1 To 3 
     ColorScale = .Cells(2, i).Value/.Cells(3, i).Value 
     If ColorScale < 0.5 Then 
      red = 255 
      green = ColorScale * 2 * 255 
     Else 
      red = (1 - ColorScale) * 2 * 255 
      green = 255 
     End If 

     .Cells(1, i).Interior.Color = RGB(red, green, 0) 
    Next i 
End With 
+0

¿Excel 2007 acepta cualquier color de celda arbitrario? ¿O todavía está restringido a una paleta de 40 colores como Excel 2003? (Todavía estoy usando 2003.) –

+0

Creo que sí, acabo de ejecutar un ciclo de 1 a 100 y obtuve un buen gradiente. (en Excel 2010 al menos, no tengo 2007 en casa) –

+0

Nice. ¡Las paletas son así hace tres décadas! –

Cuestiones relacionadas