Coloriage du texte partiel dans la cellule dans Excel

Dans Excel, il existe plusieurs façons de colorer dynamiquement une cellule pleine basée sur sa valeur, mais est-il possible de colorier dynamiquement uniquement une partie de la cellule en fonction de sa valeur?

Par exemple, disons que je construis un rapport qui ressemble à ce qui suit:

_________________________ | | Dec | Nov | |_______|___________|_____| |Gross R| $75 (-25%)| $100| |_______|___________|_____| |Net Inc| $55 (+10%)| $50 | |_______|___________|_____| 

Dans ce scénario, je souhaite seulement colorier les valeurs de pourcentage (-25%) et (+ 10%), et non les valeurs en dollars de 75 $ et 55 $ qui sont également dans la cellule. En ajoutant au problème, la coloration doit être dynamique (verte pour positive, rouge pour valeurs négatives), et ces cellules sont des références (de sorte que la coloration manuelle est hors table).

J'ai essayé d'utiliser la fonction TEXT() intégrée, mais cela ne fonctionnait pas non plus. En particulier, j'ai essayé =TEXT(A1,"$##")&" "&TEXT(A2,"[Green]0%;[Red](-0%)")A1 est la référence de la cellule au montant en dollars et A2 Est la référence de la cellule au pourcentage delta.

Le fait frustrant 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 de numéro personnalisé), mais lorsqu'il est appliqué via la fonction TEXT() Cesse de fonctionner. Alors, comment puis-je personnaliser une valeur partielle dans une cellule?

3 Solutions collect form web for “Coloriage du texte partiel dans la cellule dans Excel”

Il y a eu deux approches que j'ai découvertes pour contourner ce problème et qu'aucun d'eux n'était vraiment optimal.

La première approche a été de briser les chaînes en deux colonnes séparées, de sorte que je pourrais utiliser l'un des formats personnalisés décrits précédemment pour définir sa couleur. Ce n'est pas une solution idéale parce que je devais faire des compromis sur le «look and feel» du rapport afin d'accueillir cette colonne supplémentaire.

La deuxième approche est l'utilisation de VBA / macros, qui, bien que j'ai choisi d'éviter dans ce scénario particulier, auraient été à la hauteur de la tâche. Alors que je n'écrirai pas tout le code de travail, il est essentiel de répondre à ceci:

  1. Trouvez une cellule que vous souhaitez ajuster (soit via ActiveCell ou une boucle)
  2. Utilisez la fonction Instr pour trouver l'emplacement dans la chaîne où vous souhaitez modifier la couleur
  3. Si la longueur du texte est variable, utilisez Instr nouveau pour trouver l'emplacement en chaîne où vous souhaitez arrêter la couleur
  4. Utilisez la fonction Characters(start, length) pour mettre en surbrillance les caractères exacts que vous souhaitez modifier, en passant les valeurs trouvées précédemment.
  5. Modifiez la couleur avec Font.Color = RGB(r,g,b)

Un exemple utilisant une macro peut être trouvé ici:

Macro pour colorier une partie du texte dans les cellules d'Excel

Macros Excel – For Loop to Color Part of Cells

Utilisez une macro Excel qui contient une boucle for pour faire une boucle sur des lignes de données météorologiques et colorier une partie du texte de la cellule rouge si elle contient le mot chaud et bleu si elle contient le mot cool:

Instructions

  1. Cliquez sur l'onglet Développeur dans Excel
  2. Cliquez sur l'icône Visual Basic et copiez le texte de la macro ci-dessous dans la fenêtre du code 1
  3. Cliquez sur l'icône Excel pour revenir à la vue Excel
  4. Cliquez sur l'icône Macros, sélectionnez la macro appelée TextPartColourMacro et cliquez sur Exécuter

La macro terminée:

 Sub TextPartColourMacro() ' Declarations and Initialisation Dim Row As Integer, Col As Integer Dim CurrentCellText As String Col = 1 ' Loop Through Rows 2 to 5 For Row = 2 To 5 ' Get Text in Current Cell CurrentCellText = ActiveSheet.Cells(Row, Col).Value ' Get the Position of the Text Hot and Cool HotStartPosition = InStr(1, CurrentCellText, "Hot") CoolStartPosition = InStr(1, CurrentCellText, "Cool") ' Colour the Word Hot Red If HotStartPosition > 0 Then ActiveSheet.Cells(Row, Col).Characters(HotStartPosition, 3).Font.Color = RGB(255, 0, 0) End If ' Colour the Word Cool Blue If CoolStartPosition > 0 Then ActiveSheet.Cells(Row, Col).Characters(CoolStartPosition, 4).Font.Color = RGB(0, 0, 255) End If Next Row End Sub 

Insérez la ligne sur le texte souhaitant être mis en surbrillance, faites la ligne aussi large que nécessaire pour la lumière élevée, modifiez la couleur du texte en jaune (ou toute couleur que vous choisissez) et réduisez l'opacité de la ligne à votre goût.

  • Transformée de données de la feuille de calcul Excel
  • Comment puis-je créer un graphique en croissance dynamique qui ignore les cellules de la queue vide?
  • Excel - Empêche le texte de la cellule de déborder vers la cellule suivante (vide)
  • Une couleur de fond de la grille alternative dans Excel lorsque la valeur d'une seule colonne change?
  • Excel: prenez les données horizontales de la table, organisez verticalement dans une feuille différente, en ignorant les blancs
  • Excel copy-paste ne fait que copier en tant que valeurs, mais je veux qu'il copie des formules
  • Importation de fichiers CSV dans Excel à l'aide d'une macro
  • Formatage conditionnel Excel 2010: mise en surbrillance sélective des doublons
  • Comment supprimer des enregistrements non dupliqués dans Excel-2010
  • Trouver des valeurs uniques dans 3 colonnes
  • Comment puis-je afficher des valeurs dans la barre de formule au lieu des références de cellule?
  • Soyons le génie de l'ordinateur et du réseau.