Dans Excel, il existe plusieurs façons de colorer dynamiquement une cellule entière en fonction de sa valeur, mais existe-t-il un moyen de colorer dynamiquement uniquement une partie de la cellule en fonction de sa valeur?
Par exemple, supposons que je crée un rapport qui ressemble à ceci:
_________________________
| | Dec | Nov |
|_______|___________|_____|
|Gross R| $75 (-25%)| $100|
|_______|___________|_____|
|Net Inc| $55 (+10%)| $50 |
|_______|___________|_____|
Dans ce scénario, je souhaite uniquement colorer les valeurs en pourcentage (-25%) et (+ 10%), pas les valeurs en dollars 75 $ et 55 $ qui sont également dans la cellule. Ajoutant au problème, la coloration doit être dynamique (verte pour les valeurs positives, rouge pour les valeurs négatives), et ces cellules sont des références (donc la coloration manuelle est hors du tableau).
J'ai essayé d'utiliser la TEXT()
fonction intégrée, mais cela n'a pas fonctionné non plus. Plus précisément, j'ai essayé =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")
où se A1
trouve la référence de cellule au montant en dollars et A2
la référence de cellule au pourcentage delta.
Ce qui est frustrant, c'est que le formatage personnalisé [Green]0%;[Red](-0%)
fonctionne très bien lorsqu'il est appliqué à la cellule entière (via la section de formatage numérique personnalisé), mais lorsqu'il est appliqué via la TEXT()
fonction, il cesse de fonctionner. Alors, comment puis-je personnaliser la couleur d'une valeur partielle dans une cellule?
Réponses:
J'ai découvert deux approches pour contourner ce problème, et aucune n'était vraiment optimale.
La première approche consistait à diviser les chaînes en deux colonnes distinctes, de cette façon, je pouvais utiliser l'une des mises en forme personnalisées décrites précédemment pour définir sa couleur. Ce n'est pas une solution idéale parce que j'ai dû faire un compromis sur le "look and feel" du rapport afin de tenir compte de cette colonne supplémentaire.
La deuxième approche consiste à utiliser VBA / macros, qui, bien que j'aie choisi d'éviter dans ce scénario particulier, aurait été à la hauteur. Bien que je n'imprime pas tout le code de travail, il se résume à ceci:
ActiveCell
ou en boucle)Instr
fonction pour trouver l'emplacement dans la chaîne où vous souhaitez modifier la couleurInstr
nouveau pour trouver l'emplacement dans la chaîne où vous souhaitez arrêter la couleurCharacters(start, length)
fonction pour mettre en surbrillance les caractères exacts que vous souhaitez modifier, en transmettant les valeurs trouvées précédemment.Font.Color = RGB(r,g,b)
la source
Un exemple utilisant une macro peut être trouvé ici:
Macro pour colorer une partie du texte dans les cellules dans Excel
la source
Une approche réalisable bien que ce ne soit pas une solution dans MS EXCEL si vous divisez la grille de feuille Excel (largeur de cellule) égale à un espace de caractères, vous pouvez alors l'utiliser de la couleur de votre choix:
la source
Cette macro colorera toute plage de texte sélectionnée contenant des crochets en rouge si le texte entre les crochets contient un caractère "-", sinon il sera coloré en vert. Tout le texte en dehors des crochets reste inchangé.
la source
Insérez une ligne sur le texte à mettre en surbrillance, rendez la ligne aussi large que nécessaire pour un éclairage élevé, changez la couleur du texte en jaune (ou toute couleur que vous choisissez) et réduisez l'opacité de la ligne à votre convenance.
la source