
¿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:
- Pulsa Alt+ F11.
- En el Explorador de proyectos (panel izquierdo), haga doble clic en la hoja de trabajo a la que desea aplicar el formato.
- 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 Objects
su carpeta VBA Project
en VBE, luego haga doble clic en ThisWorkbook
para generar un código auxiliar. Seleccione Worksheet
en el lado izquierdo y luego seleccione SheetChange
en el lado derecho.
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.