Совет. Другие языки - Google-Translated. Вы можете посетить English версия этой ссылки.
Войти
x
or
x
x
Регистрация
x

or

Как выделить конкретный текст внутри ячейки на основе другого текста?

В Excel нам может быть легко выделить ячейки на основе определенного текста, но здесь я хочу выделить конкретный текст внутри ячейки, чтобы сделать его выдающимся, но не всей ячейкой. Это может быть неприятно для большинства из нас. В этой статье я расскажу о некоторых трюках для решения этой задачи в Excel.

Выделите конкретный текст в нескольких ячейках с кодом VBA

Выделите конкретный текст внутри ячейки на основе другого текста с кодом VBA


arrow синий правый пузырь Выделите конкретный текст в нескольких ячейках с кодом VBA


Например, у меня есть ряд текстовых строк, и теперь я хочу выделить конкретный текст "Небо"В этих ячейках, чтобы получить результат в следующем скриншоте:

doc выделить конкретный текст 1

Чтобы выделить только часть текста внутри ячейки, вам может помочь следующий код VBA.

1. Выберите ячейки, которые вы хотите выделить конкретным текстом, а затем нажмите и удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окна.

2. Щелчок Вставить > модуль, и вставьте следующий код в модуль Окно.

Код VBA: выделите часть текста внутри ячейки:

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, Затем нажмите F5 ключ для запуска этого кода, и появится окно подсказки, чтобы напомнить вам ввести текст, который вы хотите выделить только, см. снимок экрана:

doc выделить конкретный текст 2

4, Затем нажмите OK , весь указанный вами текст был выделен только в ячейках, см. снимок экрана:

doc выделить конкретный текст 3


arrow синий правый пузырь Выделите конкретный текст внутри ячейки на основе другого текста с кодом VBA

Вот еще одна ситуация: у меня есть два столбца, в которых первый столбец содержит текстовые строки, а второй - конкретный текст. Теперь мне нужно выделить относительный текст в первом столбце на основе определенного текста во втором столбце.

doc выделить конкретный текст 4

1, Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окна.

2. Щелчок Вставить > модуль, и вставьте следующий код в модуль Окно.

Код VBA: выделите часть текста внутри ячейки на основе другого текста:

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, После вставки кода и нажмите F5 чтобы запустить его, появится окно подсказки, чтобы напомнить вам, выберите диапазон данных, в котором содержатся текстовая строка и конкретный текст, который вы хотите выделить и на основе, см. снимок экрана:

doc выделить конкретный текст 5

4, Затем нажмите OK , весь соответствующий текст в первом столбце, основанный на конкретном тексте во втором столбце, был окрашен в красный цвет как следующий снимок экрана:

doc выделить конкретный текст 6


Kutools для Excel - лучший инструмент для повышения производительности в офисе Повысьте производительность на 80%

  • Супер Формула Бар (легко редактировать несколько строк текста и формул); Макет чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы и хранение данных; Содержание сплит-клеток; Объедините дублирующиеся строки и сумму / среднее... предотвратить повторяющиеся клетки; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выберите пустые строки (все ячейки пусты); Супер найти и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения формулы ссылки; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Любимые и быстро вставляемые формулы, Диапазоны, графики и рисунки; Шифрование ячеек с паролем; Создать список рассылки и отправлять электронные письма ...
  • Извлечение текстаДобавить текст, Удалить по позиции, Удалить пространство; Создание и печать промежуточных итогов подкачки; Преобразование содержимого ячеек и комментариев...
  • Суперфильтр (сохранить и применить схемы фильтров к другим листам); Расширенный поиск по месяцам / неделям / дням, частоте и более; Специальный фильтр жирным шрифтом, курсивом ...
  • Объединить рабочие тетради и рабочие листы; Объединение таблиц на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Работает с Office 2007-2019 и 365 и поддерживает все языки. Это легко развернуть в вашей компании. Полнофункциональная 60-дневная бесплатная пробная версия.
вкладка kte 201905

Вкладка «Office» предоставляет интерфейс с вкладками для Office и упрощает работу

  • Включить редактирование и чтение с вкладками в Word, Excel, PowerPoint, Издатель, Доступ, Visio и Проект.
  • Открывайте и создавайте несколько документов в новых вкладках одного и того же окна, а не в новых окнах.
  • Увеличивает вашу производительность на 50% и уменьшает сотни щелчков мышью для вас каждый день!
нижняя часть офиса
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.
    leroy holmes · 21 days ago
    Awesome. thanks
  • To post as a guest, your comment is unpublished.
    Iris Pereyra · 3 months ago
    This was very useful, thanks very much!
  • To post as a guest, your comment is unpublished.
    Darshan Smg · 3 months ago
    Hi,
    Please any one help me. I want to highlight the specific number in same sentence. For ex : " 2 days leave scansion" want to highlight only "2" in sentence.
  • To post as a guest, your comment is unpublished.
    Darshan · 3 months ago
    Hi, anyone help me this. i want to highlight the Specific number in Cell within the same sentence. for Ex : " 2 days leave scansion " in this sentence want to highlight number.
  • To post as a guest, your comment is unpublished.
    vyshal Kumar · 6 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 · 6 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.
      Simon Proulx · 3 months ago
      I had the same issue; I found that one of my collumns were formulas and it was looking in them which was what triggered the error 13. Selected a range wihtout formula containing the text to highlight and it worked.
  • To post as a guest, your comment is unpublished.
    Madhusudhanan · 7 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 · 7 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 · 8 months ago
    Is there a way to remove all those highlighted words?
    • To post as a guest, your comment is unpublished.
      skyyang · 7 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 · 1 years 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 · 1 years 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 · 9 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 · 9 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 · 9 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!
  • To post as a guest, your comment is unpublished.
    lolster · 1 years ago
    hi, i noticed that this is case senitive highliter. Where can i change that it would highlite lower and upper casese in deired word
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello, lolster,

      In the above two codes, which code do you want to identify case sensitive?
      We will modify the code for you!
      • To post as a guest, your comment is unpublished.
        elaine · 10 months ago
        Hi, I would like to ask the same question to highlight both lower and upper case, in the case of below:

        "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)"
  • To post as a guest, your comment is unpublished.
    Eugene Cloud · 1 years ago
    Thank you for "Highlight A Specific Text Within Multiple Cells With VBA Code" It works great. Would you please explain:
    line 18 xTmp = xTmp & Split(Rng.Value, cFnd)(x)
    Why idoes the "(x)" have to appear where it is? Is the value of x passed to the Split function as a named argument without the name? I would really like to understand this concept.Thank you for your help and this function. I have learned something I didn't know.
  • To post as a guest, your comment is unpublished.
    L · 1 years ago
    how could i get this code to work but have it highlight in a color other than red?
    • To post as a guest, your comment is unpublished.
      skyyang · 1 years ago
      Hello,
      If you want to highlight the text with other color, you just need to change the color index number 3 to other color index number in the below script:
      .Characters(Start:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3

      Please try it. Thank you!
  • To post as a guest, your comment is unpublished.
    AMIT · 1 years ago
    Can anyone help me for a code to " copy those highlighted word in a different column ".
  • To post as a guest, your comment is unpublished.
    Alex · 1 years ago
    It worked great for me, thank you for sharing this with the world.
  • To post as a guest, your comment is unpublished.
    Angela · 1 years ago
    I get an error and when I debug it highlights this section m = UBound(Split(Rng.Value, cFnd))
  • To post as a guest, your comment is unpublished.
    Nic · 1 years ago
    Thank you!!!
  • To post as a guest, your comment is unpublished.
    W Law · 2 years ago
    I used Excel365. First VBA is not working. Second one cannot highlight correct keywords i.e. not working too
  • To post as a guest, your comment is unpublished.
    Umar · 2 years ago
    I have checked both given codes in excel 2016 but not working.
  • To post as a guest, your comment is unpublished.
    Pavlo · 2 years ago
    Thank you so much for your tip and macros. I can't imagine what I would do without them.