Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'enregistrer
x

or

Comment mettre en évidence un texte spécifique dans une cellule en fonction d'un autre texte?

Dans Excel, il peut être facile pour nous de mettre en évidence les cellules basées sur un texte spécifique, mais, ici, je veux mettre en évidence un texte spécifique dans une cellule pour le rendre exceptionnel mais pas la cellule entière. C'est peut-être un problème pour la plupart d'entre nous. Cet article, je vais parler de quelques astuces pour résoudre ce travail dans Excel.

Mettez en surbrillance un texte spécifique dans plusieurs cellules avec le code VBA

Mettez en surbrillance le texte spécifique dans une cellule en fonction d'un autre texte avec le code VBA


flèche bleue droite bulle Mettez en surbrillance un texte spécifique dans plusieurs cellules avec le code VBA


Par exemple, j'ai une série de chaînes de texte, et maintenant, je veux mettre en évidence le texte spécifique "Ciel"Dans ces cellules pour obtenir le résultat suivant capture d'écran:

doc surligner le texte spécifique 1

Pour mettre en évidence seulement une partie du texte dans une cellule, le code VBA suivant peut vous aider.

1. Sélectionnez les cellules dont vous souhaitez mettre en surbrillance le texte spécifique, puis maintenez la touche ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez le code suivant dans le Module Fenêtre.

Code VBA: Mettez en surbrillance une partie du texte dans une cellule:

Sub HighlightStrings()
'Updateby Extendoffice 20160704
Application.ScreenUpdating = False
Dim Rng As Range
Dim cFnd As String
Dim xTmp As String
Dim x As Long
Dim m As Long
Dim y As Long
cFnd = InputBox("Enter the text string to highlight")
y = Len(cFnd)
For Each Rng In Selection
  With Rng
    m = UBound(Split(Rng.Value, cFnd))
    If m > 0 Then
      xTmp = ""
      For x = 0 To m - 1
        xTmp = xTmp & Split(Rng.Value, cFnd)(x)
        .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
        xTmp = xTmp & cFnd
      Next
    End If
  End With
Next Rng
Application.ScreenUpdating = True
End Sub

3. Puis appuyez F5 clé pour exécuter ce code, et une boîte de dialogue apparaîtra pour vous rappeler d'entrer le texte que vous voulez mettre en évidence seulement, voir capture d'écran:

doc surligner le texte spécifique 2

4. Et puis cliquez OK bouton, tout le texte que vous avez spécifié a été mis en évidence uniquement dans les cellules, voir capture d'écran:

doc surligner le texte spécifique 3


flèche bleue droite bulle Mettez en surbrillance le texte spécifique dans une cellule en fonction d'un autre texte avec le code VBA

Voici une autre situation, j'ai deux colonnes dont la première colonne contient les chaînes de texte et la deuxième colonne est le texte spécifique, maintenant, je dois mettre en évidence le texte relatif dans la première colonne basée sur le texte spécifique dans la deuxième colonne.

doc surligner le texte spécifique 4

1. Maintenez le ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez le code suivant dans le Module Fenêtre.

Code VBA: Mettez en évidence une partie du texte dans une cellule en fonction d'un autre texte:

Sub highlight()
'Updateby Extendoffice 20160704
    Dim xStr As String
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xChar As String
    Dim I As Long
    Dim J As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
LInput:
    Set xRg = Application.InputBox("please select the data range:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    If xRg.Areas.Count > 1 Then
        MsgBox "not support multiple columns"
        GoTo LInput
    End If
    If xRg.Columns.Count <> 2 Then
        MsgBox "the selected range can only contain two columns "
        GoTo LInput
    End If
    For I = 0 To xRg.Rows.Count - 1
        xStr = xRg.Range("B1").Offset(I, 0).Value
        With xRg.Range("A1").Offset(I, 0)
            .Font.ColorIndex = 1
            For J = 1 To Len(.Text)
                If Mid(.Text, J, Len(xStr)) = xStr Then .Characters(J, Len(xStr)).Font.ColorIndex = 3
            Next
        End With
    Next I
End Sub

3. Après avoir collé le code, appuyez sur F5 clé pour l'exécuter, une boîte de dialogue apparaîtra pour vous rappeler de sélectionner la plage de données qui contient à la fois la chaîne de texte et le texte spécifique que vous souhaitez mettre en évidence et sur la base, voir capture d'écran:

doc surligner le texte spécifique 5

4. Et puis cliquez OK bouton, tout le texte correspondant dans la première colonne basée sur le texte spécifique dans la deuxième colonne a été colorée en rouge comme capture d'écran suivante:

doc surligner le texte spécifique 6



Outils de productivité recommandés

Office Tab

étoile d&#39;or1 Apportez des onglets pratiques à Excel et à d'autres logiciels Office, tout comme Chrome, Firefox et Internet Explorer.

Kutools for Excel

étoile d&#39;or1 Incroyable! Augmentez votre productivité dans les minutes 5. Ne nécessite pas de compétences particulières, économisez deux heures par jour!

étoile d&#39;or1 300 Nouvelles fonctionnalités pour Excel, rendent Excel facile et puissant:

  • Fusionner des cellules / lignes / colonnes sans perdre de données.
  • Combiner et consolider plusieurs feuilles et classeurs.
  • Comparez les gammes, copiez plusieurs gammes, convertissez le texte en date, l'unité et la conversion de devise.
  • Compter par couleurs, sous-totaux de recherche, tri avancé et super filtre,
  • Plus Sélectionner / Insérer / Supprimer / Texte / Format / Lier / Commenter / Classeurs / Feuilles de calcul Outils ...

Capture d&#39;écran de Kutools pour Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    vyshal Kumar · 2 months ago
    Hi,
    could anyone help me with the following

    my Cells in Column "G" contain the text from Column Z to AN, not compulsory that Column g contains all the text from Z to AN.

    My work here is to Highlight the text in Column G if it does not available in any of Column Z - AN

    For example : Cell G1 contains (Hello sir I am doing well) but The text "Sir" do not exist in Column "Z1" to "AN1"

    So i need to highlight the text "Sir"
  • To post as a guest, your comment is unpublished.
    Yaniv · 2 months ago
    i get a run-time error '13', type mismatch when i run the script. any suggestions?
  • To post as a guest, your comment is unpublished.
    Madhusudhanan · 3 months ago
    HI
    I am regular visitor of your website. Your website is very useful for me. This code changes the font color. I want to highlight particular words (for example Insert, blank) in yellow background. I want to highlight this. Not just a font colour. Keep up the great work!!! Many thanks.
    • To post as a guest, your comment is unpublished.
      skyyang · 3 months ago
      Hi, Madhusudhanan,
      May be there is no direct way for highlighting part of text in a cell with background color in Excel worksheet.
      If you have other good method, please comment here.
  • To post as a guest, your comment is unpublished.
    Ace · 4 months ago
    Is there a way to remove all those highlighted words?
    • To post as a guest, your comment is unpublished.
      skyyang · 3 months ago
      Hi, Ace,
      To delete the text based on another column cell, the below vba code may help you, please try it.
      Sub DeleteStr()
      Dim xStr As String
      Dim xRg As Range
      Dim xTxt As String
      Dim xCell As Range
      Dim xChar As String
      Dim i As Long
      Dim J As Long
      On Error Resume Next
      If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
      Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
      End If
      LInput:
      Set xRg = Application.InputBox("please select the data range:", "Kutools for Excel", xTxt, , , , , 8)
      If xRg Is Nothing Then Exit Sub
      If xRg.Areas.Count > 1 Then
      MsgBox "not support multiple columns"
      GoTo LInput
      End If
      If xRg.Columns.Count <> 2 Then
      MsgBox "the selected range can only contain two columns "
      GoTo LInput
      End If
      For i = 0 To xRg.Rows.Count - 1
      xStr = xRg.Range("B1").Offset(i, 0).Value
      With xRg.Range("A1").Offset(i, 0)
      .Font.ColorIndex = 1
      For J = 1 To Len(.Text)
      If Mid(.Text, J, Len(xStr)) = xStr Then
      .Characters(J, Len(xStr)).Delete
      End If
      Next
      End With
      Next i
      End Sub
  • To post as a guest, your comment is unpublished.
    Arturs · 8 months ago
    Is there a way to make the first VBA code in a way to work with a fixed list of keywords without a promt box? For example, I always want to find and mark keyword1, keyword2 and keyword3 in all text strings also when one string contains more than one of these keywords (all of them should get highlighted in the specific text string). And is it possible to make keyword1 and keyword2 red but the third one just bold?
    • To post as a guest, your comment is unpublished.
      skyyang · 8 months ago
      Hello, Arturs,

      To highlight multiple keywords from a cell, the following vba code can help you:(you should separate the words by semicolon in the popped out input box)

      Sub HighlightStrings()
      Application.ScreenUpdating = False
      Dim Rng As Range
      Dim cFnd As String
      Dim xTmp As String
      Dim x As Long
      Dim m As Long
      Dim y As Long
      Dim xFNum As Integer
      Dim xArrFnd As Variant
      Dim xStr As String
      cFnd = InputBox("Please enter the text, separate them by semicolon:")
      If Len(cFnd) < 1 Then Exit Sub
      xArrFnd = Split(cFnd, ";")
      For Each Rng In Selection
      With Rng
      For xFNum = 0 To UBound(xArrFnd)
      xStr = xArrFnd(xFNum)
      y = Len(xStr)
      m = UBound(Split(Rng.Value, xStr))
      If m > 0 Then
      xTmp = ""
      For x = 0 To m - 1
      xTmp = xTmp & Split(Rng.Value, xStr)(x)
      .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
      xTmp = xTmp & xStr
      Next
      End If
      Next xFNum
      End With
      Next Rng
      Application.ScreenUpdating = True
      End Sub
      • To post as a guest, your comment is unpublished.
        IvyCY · 5 months ago
        Hello Skyyang! I found there would be an error if running the code - it could not specify the word following a colon. Do you have any suggestion to improve it? Thank you very much!
        • To post as a guest, your comment is unpublished.
          skyyang · 5 months ago
          Hello, IvyCY,
          If you want to specify the words by a colon, you just need to change the semicolon symbol to colon, please apply the following code:

          Sub HighlightStrings()
          Application.ScreenUpdating = False
          Dim Rng As Range
          Dim cFnd As String
          Dim xTmp As String
          Dim x As Long
          Dim m As Long
          Dim y As Long
          Dim xFNum As Integer
          Dim xArrFnd As Variant
          Dim xStr As String
          cFnd = InputBox("Please enter the text, separate them by colon:")
          If Len(cFnd) < 1 Then Exit Sub
          xArrFnd = Split(cFnd, ":")
          For Each Rng In Selection
          With Rng
          For xFNum = 0 To UBound(xArrFnd)
          xStr = xArrFnd(xFNum)
          y = Len(xStr)
          m = UBound(Split(Rng.Value, xStr))
          If m > 0 Then
          xTmp = ""
          For x = 0 To m - 1
          xTmp = xTmp & Split(Rng.Value, xStr)(x)
          .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
          xTmp = xTmp & xStr
          Next
          End If
          Next xFNum
          End With
          Next Rng
          Application.ScreenUpdating = True
          End Sub
          • To post as a guest, your comment is unpublished.
            IvyCY · 5 months ago
            Thank you for your reply, skyyang!

            But it still didn't work.
            Perhaps my question was quite confusing. An example may make it clearer.
            For example, one of my keywords is "protect". The text in the cells might be displayed as "Our ways to solve the problem: protection and blablabla... " There might be spaces between ":" and "protection" because the formatting of the text is not always the same. Here, the keyword "protection" could not be highlighted by the codes above. That's the problem.

            I've tried several times but failed. I have also considered removing the punctuation in the cells, but it would compromise the comprehension of the texts. So I asked the question. Hope you don't mind.

            Thank you very much!

            Best regards!