Excel: use fórmula en formato de celda

Excel: use fórmula en formato de celda

¿Hay alguna manera de utilizar una fórmula como formato de celda?

AFAIK, el formato condicional solo permite aplicar un formato estático en función de alguna condición. Quiero que el formato en sí sea dinámico. Por ejemplo, quiero establecer que el color de una celda sea su contenido (si el valor de la celda es "rojo", entonces use rojo como color), sin establecer una regla de formato condicional para cada color.

Sé que esto se puede hacer con una macro, pero no quiero ejecutar una macro después de cada cambio de celda.

Respuesta1

No creo que exista una fórmula para esto, ni tampoco una opción en el administrador de formato condicional.

Sin embargo, puedes usar VBA. Aquí hay una pequeña función para comenzar:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

'Do nothing if more than one cell is updated, or if cell contents are deleted
If Target.Cells.Count > 1 Or IsEmpty(Target) Then
    Exit Sub
End If

Select Case LCase(Target.Value)
    Case "red"
        newcolor = RGB(255, 0, 0)
    Case "blue"
        newcolor = RGB(0, 0, 255)
    Case "chartreuse"
        newcolor = RGB(0, 255, 0)
    Case "lavender"
        newcolor = RGB(224, 176, 255)
    Case Else
        newcolor = Target.Interior.Color
End Select

Target.Interior.Color = newcolor
Application.EnableEvents = True

End Sub

Usar:

  1. Pulsa Alt+ F11.
  2. En el Explorador de proyectos (panel izquierdo), haga doble clic en la hoja de trabajo a la que desea aplicar el formato.
  3. Pega el código en la ventana.

La subrutina se ejecutará automáticamente:

  • Cuando escribe "rojo", "azul", "chartreuse" o "lavanda" arriba encualquiercelda en esa hoja de trabajo en particular
  • Cuando una fórmula encualquierla celda devuelve "rojo", "azul", "chartreuse" o "lavanda"

No es necesario ejecutar manualmente la función cada vez que necesite colorear alguna celda.

También puede limitar las celdas en las que "operará" esta función cambiando la condición en el bloque IF. Por ejemplo, para colorear celdas en una columnaCSolamente, puedes cambiar el bloque IF de arriba al ff:

If Target.Cells.Count > 1 Or Target.Column <> 3 Then
    Exit Sub
End If

Por supuesto, tendría que guardar su libro como un documento habilitado para macros.

Respuesta2

Hasta donde yo sé, salvo agregar un formato condicional para cada color, no puedes hacerlo sin una macro. Lo bueno es que no debería tomar mucho tiempo hacer uno para cada color que uses, yo diría que es un proceso de 5 minutos.

Respuesta3

Estoy de acuerdo con el otro autor en que es probable que tengas que usar una macro. No tendría que ejecutar la macro manualmente cada vez, ya que podría asignarla a unCambio de hojaevento.

Haga clic en Microsoft Excel Objectssu carpeta VBA Projecten VBE, luego haga doble clic en ThisWorkbookpara generar un código auxiliar. Seleccione Worksheeten el lado izquierdo y luego seleccione SheetChangeen el lado derecho.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Sucede que el ejemplo que vinculé usa este evento para controlar el color de la celda (tendrías que actualizar el código para usar la cadena "red",, en lugar "green"de "blue"la declaración de caso con los valores numéricos.

información relacionada