En Excel hay varias formas de colorear dinámicamente una celda completa en función de su valor, pero ¿hay alguna forma de colorear dinámicamente solo una parte de la celda en función de su valor?
Por ejemplo, supongamos que estoy creando un informe que se parece a lo siguiente:
_________________________
| | Dec | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|
En este escenario, solo deseo colorear los valores porcentuales (-25%) y (+ 10%), no los valores en dólares de $ 75 y $ 55 que también están en la celda. Además del problema, el color debe ser dinámico (verde para valores positivos, rojo para valores negativos), y estas celdas son referencias (por lo que el color manual está fuera de la tabla).
He intentado usar la TEXT()
función integrada, pero tampoco funcionó. Específicamente probé =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")
dónde A1
está la referencia de celda al monto en dólares yA2
es la referencia de celda al porcentaje delta.
Lo frustrante es que el formato personalizado [Green]0%;[Red](-0%)
funciona bien cuando se aplica a toda la celda (a través de la sección de formato de número personalizado), pero cuando se aplica a través de la TEXT()
función deja de funcionar. Entonces, ¿cómo puedo personalizar el color de un valor parcial dentro de una celda?
Respuestas:
Descubrí que había dos enfoques para solucionar este problema, y ninguno era realmente óptimo.
El primer enfoque fue dividir las cadenas en dos columnas separadas, de esa manera podría usar uno de los formatos personalizados descritos anteriormente para establecer su color. Esta no es una solución ideal porque tuve que comprometer el "aspecto" del informe para acomodar esa columna adicional.
El segundo enfoque es mediante el uso de VBA / macros, que aunque opté por evitar en este escenario particular, habría estado a la altura de la tarea. Si bien no imprimiré todo el código de trabajo, lo esencial se reduce a esto:
ActiveCell
un bucle)Instr
función para encontrar la ubicación en la cadena donde desea modificar el colorInstr
nuevamente para buscar la ubicación en la cadena donde desea detener el colorCharacters(start, length)
función para resaltar los caracteres exactos que desea modificar, pasando los valores encontrados anteriormente.Font.Color = RGB(r,g,b)
fuente
Un ejemplo usando una macro se puede encontrar aquí:
Macro para colorear parte del texto en celdas en Excel
fuente
Un enfoque factible, aunque no es una solución en MS EXCEL si divide la cuadrícula de la hoja de Excel (ancho de celda) igual a un espacio de caracteres, entonces puede usarlo del color de su elección:
fuente
Esta macro coloreará cualquier rango seleccionado de texto que contenga corchetes a rojo si el texto dentro de los corchetes contiene un carácter "-", de lo contrario lo coloreará en verde. Todo el texto fuera de los corchetes permanece sin cambios.
fuente
Inserte la línea sobre el texto que desea resaltar, haga la línea tan ancha como sea necesario para resaltar, cambie el color del texto a amarillo (o cualquier color que elija) y reduzca la opacidad de la línea a su gusto.
fuente