2008-11-06 12 views
5

Excel tiene una opción de Formato condicional ... en el menú Formato que le permite cambiar el estilo/color/fuente/lo que sea de una celda dependiendo de su valor. Pero solo permite tres condiciones.Colores de fondo de varias celdas en hojas de cálculo de Excel

¿Cómo hago para que Excel muestre, por ejemplo, seis colores de celda de fondo diferentes según el valor de la celda? (Es decir, haga que la celda sea roja si el valor es "Rojo", y azul si es "Azul", etc.)

Respuesta

7

Deberá escribir algo en VBA.

Ver ejemplo aquí: Get Around Excels 3 Criteria Limit in Conditional Formatting:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim icolor As Integer 

    If Not Intersect(Target, Range("A1:A10")) is Nothing Then 

     Select Case Target 

      Case 1 To 5 
       icolor = 6 
      Case 6 To 10 
       icolor = 12 
      Case 11 To 15 
       icolor = 7 
      Case 16 To 20 
       icolor = 53 
      Case 21 To 25 
       icolor = 15 
      Case 26 To 30 
       icolor = 42 
      Case Else 
       'Whatever 
     End Select 

     Target.Interior.ColorIndex = icolor 
    End If 
End Sub 
3

Excel 2007 permite que más de tres condiciones. Citando de this Microsoft page:

EDITAR: Ah, hay una "característica" en el código de enlace: los paréntesis en un enlace citado entre paréntesis no se manejan correctamente. Ese enlace es: http://msdn.microsoft.com/en-us/library/bb286672(office.11).aspx

Otros beneficios de los cambios en formato condicional en Excel 2007 son la capacidad de especificar más de tres condiciones, para reordenar condiciones, y para tener más de un condición de determinación de Cierto.

De lo contrario. estás atascado con alternativas desordenadas como se describe, me temo.

1

pon esto en un módulo en tu proyecto de VBA. A continuación, puede resaltar un rango en una hoja y ejecutar el sub desde la opción de menú Herramientas> Macro> Macros para colorear cada celda en el rango seleccionado.

Public Sub ColorCells() 

Dim cell, rng As Range 
Dim color As Integer 
Dim sheet As Worksheet 

Application.ScreenUpdating = False 
Application.StatusBar = "Coloring Cells" 

    Set rng = Application.Selection 
    Set sheet = Application.ActiveSheet 

For Each cell In rng.cells 

     Select Case Trim(LCase(cell)) 

      Case "blue" 

       color = 5 

      Case "red" 

       color = 3 

      Case "yellow" 

       color = 6 

      Case "green" 

       color = 4 

      Case "purple" 

       color = 7 

      Case "orange" 

       color = 46 

      Case Else 

       color = 0 
     End Select 

    sheet.Range(cell.Address).Interior.ColorIndex = color 

Next cell 

Application.ScreenUpdating = True 
Application.StatusBar = "Ready" 

End Sub 

Si los usuarios están entrando nuevos nombres de colores en células entonces se podría poner esto en el código de la hoja en el proyecto de VBA para colorear las células como un usuario está entrando en los nombres de los colores en las células

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.cells.Count > 1 Then Exit Sub 

Dim color As Integer 

     Select Case Trim(LCase(Target)) 

      Case "blue" 

       color = 5 

      Case "red" 

       color = 3 

      Case "yellow" 

       color = 6 

      Case "green" 

       color = 4 

      Case "purple" 

       color = 7 

      Case "orange" 

       color = 46 

      Case Else 

       color = 0 

     End Select 

Target.Interior.ColorIndex = color 

End Sub 

EDITAR: Se agregó la función Recortar alrededor de la expresión de la declaración de caso para probar, de modo que los espacios iniciales/finales accidentales en las celdas se ignoran :)

Cuestiones relacionadas