Note: The other languages of the website are Google-translated. Back to English

Як виділити конкретний текст у комірці на основі іншого тексту?

В Excel нам може бути легко виділити клітинки на основі певного тексту, але тут я хочу виділити конкретний текст всередині комірки, щоб зробити його видатним, але не всієї комірки. Це, можливо, клопітно для більшості з нас. У цій статті я розповім про деякі хитрощі для вирішення цієї роботи в Excel.


Виділіть один або кілька конкретних текстів у кількох комірках за допомогою коду VBA

Наприклад, у мене є ряд текстових рядків, і тепер я хочу виділити конкретний текст “Sky”У цих клітинках, щоб отримати результат, як показано на наступних скріншотах:

Щоб виділити лише частину тексту в комірці, наступний код VBA може вам допомогти.

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

2. Клацання Insert > Модуліта вставте наступний код у Модулі Вікно

Код VBA: Виділіть частину тексту в комірці:

Sub HighlightStrings()
'Updateby Extendoffice
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 клавішу для запуску цього коду, і з'явиться підказка, щоб нагадати вам про введення тексту, який ви хочете виділити, див. знімок екрана:

4. А потім клацніть OK , весь вказаний вами текст був виділений лише в клітинках, див. знімок екрана:

чайові: Якщо вам потрібно виділити декілька ключових слів із текстових рядків, застосуйте наведений нижче код:
Код VBA: Виділіть кілька ключових слів із текстових рядків:
Sub HighlightStrings()
'Updateby Extendoffice
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 comma:")
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

Потім у спливаючому полі введіть ключові слова, які потрібно виділити, (розділіть слова комою), див. Знімок екрана:

А потім натисніть OK , зазначені слова були виділені відразу, див. скріншоти:

примітки: Наведені вище коди чутливі до регістру.


Виділіть один або кілька конкретних текстів у кількох клітинках за допомогою дивовижної функції

Якщо ви не знайомі з кодом у Excel, тут я представив простий інструмент - Kutools для Excel, З його Позначити ключове слово функцію, ви можете виділити конкретне одне або кілька ключових слів одночасно в комірках.

Примітка:Застосувати ці Позначити ключове слово По-перше, ви повинні завантажити Kutools для Excel, а потім швидко та легко застосувати функції.

після установки Kutools для Excel, будь ласка, виконайте наступне:

1. Клацання Кутулс > текст > Позначити ключове слово, див. скріншот:

2, в Позначити ключове слово діалоговому вікні, виконайте такі дії:

  • Виберіть діапазон даних, який ви хочете використовувати, з Діапазон текстове вікно;
  • Виділіть клітинки містить ключові слова, які потрібно виділити, ви також можете ввести ключові слова вручну (відокремлюючи їх комами) в ключове слово текстове поле
  • Нарешті, вам слід вказати колір шрифту для виділення текстів за допомогою прапорця Позначте кольори ключових слів варіант. (Щоб розфарбувати цілі комірки, що містять ключові слова, виберіть Позначте кольори вмісту комірки опція)

3. Потім натисніть кнопку Ok кнопку, усі зазначені тексти були виділені, як показано на знімку екрана нижче:

примітки: Ця функція не чутлива до регістру, якщо ви хочете виділити текст, чутливий до регістру, перевірте Match Case в Позначити ключове слово діалогове вікно.


Виділіть конкретний текст у комірці на основі іншого тексту за допомогою коду VBA

Ось інша ситуація: у мене є два стовпці, у яких перший стовпець містить текстові рядки, а другий стовпець - це конкретний текст, тепер мені потрібно виділити відносний текст у першому стовпці на основі конкретного тексту у другому стовпці для кожного рядок.

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.

2. Клацання Insert > Модуліта вставте наступний код у Модулі Вікно

Код VBA: виділіть частину тексту в комірці на основі іншого тексту:

Sub highlight()
'Updateby Extendoffice
    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 клавіша для його запуску, спливає вікно запиту, щоб нагадати вам вибрати діапазон даних, який містить як текстовий рядок, так і конкретний текст, який ви хочете виділити та на основі якого, див. знімок екрана:

4. А потім клацніть OK кнопку, весь відповідний текст у першому стовпці на основі конкретного тексту у другому стовпці пофарбований у червоний колір, як показано на наступному знімку екрана:


Більше відносних статей:

  • Жирний текст під час об'єднання двох стовпців в Excel
  • На аркуші Excel після об’єднання двох значень комірок формулами, ви можете виявити, що це не виділяє жирним шрифтом частину тексту в об’єднаній комірці формули. Іноді це може дратувати, як можна виділити жирний текст під час об’єднання двох стовпців у Excel?
  • Об'єднайте стовпці комірок і збережіть колір тексту в Excel
  • Як ми всі знаємо, під час об'єднання або об'єднання стовпців комірок в один стовпець форматування комірки (наприклад, колір шрифту тексту, форматування чисел тощо) буде втрачено. У цій статті я представив кілька прийомів, як об’єднати стовпці комірок в одне і максимально легко зберегти колір тексту в Excel.
  • Відображення конкретного тексту на основі значень в іншій колонці
  • Припустимо, у мене є список номерів, тепер я хочу відобразити певний текст в іншому стовпці на основі номерів цих стовпців. Наприклад, якщо номер комірки становить від 1 до 100, я хочу, щоб у сусідній комірці відображався текст «Зменшити», якщо число від 101 до 200, відображається текст «Стабільний», а якщо число більше за 200 , відображається текст «Збільшити», як показано на наступному скріншоті. Для вирішення цього завдання в Excel вам можуть допомогти наведені нижче формули у цій статті.
  • Сума клітинок з текстом і цифрами в Excel
  • Наприклад, у мене є список значень, що містять числові та текстові рядки, тепер я хочу підсумувати лише цифри на основі того самого тексту, подивіться на наступний знімок екрана. Зазвичай ви не можете безпосередньо підсумовувати значення у списку за допомогою текстового рядка, тут я представив вам деякі формули для вирішення цього завдання.

Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (36)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Щиро дякую за ваші підказки та макроси. Я не уявляю, що б я робила без них.
Цей коментар був мінімізований модератором на сайті
Я перевірив обидва вказані коди в Excel 2016, але не працював.
Цей коментар був мінімізований модератором на сайті
Я використовував Excel365. Перший VBA не працює. По-друге, не можна виділити правильні ключові слова, тобто теж не працює
Цей коментар був мінімізований модератором на сайті
Дякую!!!
Цей коментар був мінімізований модератором на сайті
Я отримую помилку, і коли я налагоджую, він виділяє цей розділ m = UBound(Split(Rng.Value, cFnd))
Цей коментар був мінімізований модератором на сайті
Це чудово спрацювало для мене, дякую, що поділилися цим зі світом.
Цей коментар був мінімізований модератором на сайті
Чи може хтось допомогти мені отримати код, щоб "скопіювати ці виділені слова в інший стовпець".
Цей коментар був мінімізований модератором на сайті
як я можу змусити цей код працювати, але виділити його іншим кольором, ніж червоний?
Цей коментар був мінімізований модератором на сайті
Здравствуйте,
Якщо ви хочете виділити текст іншим кольором, вам просто потрібно змінити номер індексу кольору 3 на інший номер індексу кольору в наступному сценарії:
.Characters(Початок:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3

Будь ласка, спробуйте. Дякую!
Цей коментар був мінімізований модератором на сайті
Здравствуйте,
За допомогою того самого макроса я хочу виділити інший текст іншим кольором, наприклад: зелений, будь ласка, допоможіть мені з цим
Цей коментар був мінімізований модератором на сайті
Привіт, Сукумар!
На жаль, не можу вирішити вашу проблему.
Будь ласка, прокоментуйте тут, якщо хтось інший має рішення.
Дякую!
Цей коментар був мінімізований модератором на сайті
Дякуємо за "Виділити певний текст у кількох клітинках за допомогою коду VBA" Він чудово працює. Поясніть, будь ласка:
рядок 18 xTmp = xTmp & Split(Rng.Value, cFnd)(x)
Чому «(x)» має з’являтися там, де воно є? Чи передається значення x у функцію Split як іменований аргумент без імені? Я дуже хотів би зрозуміти цю концепцію. Дякую за вашу допомогу та цю функцію. Я дізнався чогось, чого не знав.
Цей коментар був мінімізований модератором на сайті
привіт, я помітив, що це високий літер, чутливий до регістру. Де я можу змінити, щоб він виділяв нижній та верхній регістр у бажаному слові
Цей коментар був мінімізований модератором на сайті
Привіт, лустер,

У наведених вище двох кодах, який код ви хочете визначити з урахуванням регістру?
Ми змінимо код для вас!
Цей коментар був мінімізований модератором на сайті
Привіт, я хотів би поставити те саме запитання, щоб виділити як нижній, так і верхній регістр, у випадку нижче:

"знайти та позначити ключове слово1, ключове слово2 і ключове слово3 у всіх текстових рядках, також якщо один рядок містить більше одного з цих ключових слів (всі вони мають бути виділені в певному текстовому рядку)"
Цей коментар був мінімізований модератором на сайті
Sub HighlightStrings()
Application.ScreenUpdating = Невірний
Dim Rng як дальність
Dim cFnd як рядок
Dim xTmp як рядок
Розмір x Довжина
Dim m As Long
Смутний і як довгий
Dim xFNum як ціле число
Dim xArrFnd як варіант
Dim xStr як рядок
cFnd = InputBox("Please enter the text, separate them by comma:")
Якщо Len(cFnd) < 1, то вийдіть із Sub
xArrFnd = Split(cFnd, ",")
Для кожного вибраного кільця
З Rng
Для xFNum = 0 до UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBbound(Split(Rng.Value, xStr))
Якщо m > 0, то
xTmp = ""
Для х = 0 до m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(Початок:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
Далі
End If
Далі xFNum
Кінець з
Наступний кільце
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Чи є спосіб створити перший код VBA, щоб він працював із фіксованим списком ключових слів без вікна підказки? Наприклад, я завжди хочу знайти та позначити ключове слово1, ключове слово2 і ключове слово3 у всіх текстових рядках, також коли один рядок містить більше одного з цих ключових слів (всі вони мають бути виділені в певному текстовому рядку). А чи можна зробити ключове слово 1 і ключове слово 2 червоними, а третє - просто жирним?
Цей коментар був мінімізований модератором на сайті
Привіт, Артурсе,

Щоб виділити кілька ключових слів у клітинці, вам може допомогти наступний код vba: (ви повинні розділити слова крапкою з комою у спливаючому полі введення)

Sub HighlightStrings()
Application.ScreenUpdating = Невірний
Dim Rng як дальність
Dim cFnd як рядок
Dim xTmp як рядок
Розмір x Довжина
Dim m As Long
Смутний і як довгий
Dim xFNum як ціле число
Dim xArrFnd як варіант
Dim xStr як рядок
cFnd = InputBox("Введіть текст, розділяючи його крапкою з комою:")
Якщо Len(cFnd) < 1, то вийдіть із Sub
xArrFnd = Split(cFnd, ";")
Для кожного вибраного кільця
З Rng
Для xFNum = 0 до UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBbound(Split(Rng.Value, xStr))
Якщо m > 0, то
xTmp = ""
Для х = 0 до m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(Початок:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
Далі
End If
Далі xFNum
Кінець з
Наступний кільце
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, Скайян! Я виявив, що під час запуску коду буде помилка - він не може вказати слово після двокрапки. У вас є якісь пропозиції щодо його покращення? Дуже дякую!
Цей коментар був мінімізований модератором на сайті
Привіт, IvyCY!
Якщо ви хочете вказати слова через двокрапку, вам просто потрібно змінити символ крапки з комою на двокрапку, будь ласка, застосуйте наступний код:

Sub HighlightStrings()
Application.ScreenUpdating = Невірний
Dim Rng як дальність
Dim cFnd як рядок
Dim xTmp як рядок
Розмір x Довжина
Dim m As Long
Смутний і як довгий
Dim xFNum як ціле число
Dim xArrFnd як варіант
Dim xStr як рядок
cFnd = InputBox("Введіть текст, розділяючи його двокрапкою:")
Якщо Len(cFnd) < 1, то вийдіть із Sub
xArrFnd = Split(cFnd, ":")
Для кожного вибраного кільця
З Rng
Для xFNum = 0 до UBound(xArrFnd)
xStr = xArrFnd(xFNum)
y = Len(xStr)
m = UBbound(Split(Rng.Value, xStr))
Якщо m > 0, то
xTmp = ""
Для х = 0 до m - 1
xTmp = xTmp & Split(Rng.Value, xStr)(x)
.Characters(Початок:=Len(xTmp) + 1, Length:=y).Font.ColorIndex = 3
xTmp = xTmp & xStr
Далі
End If
Далі xFNum
Кінець з
Наступний кільце
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Дякую за відповідь, скайян!

Але це все одно не спрацювало.
Можливо, моє запитання було досить незрозумілим. Приклад може зробити це зрозумілішим.
Наприклад, одне з моїх ключових слів — «захист». Текст у клітинках може відображатися як «Наші способи вирішення проблеми: захист і блаблабла...» Між «:» і «захист» можуть бути пробіли, оскільки форматування тексту не завжди однакове. Тут ключове слово "захист" не може бути виділено кодами вище. Ось у чому проблема.

Я пробував кілька разів, але не вдалося. Я також подумав про видалення розділових знаків у клітинках, але це поставило б під загрозу розуміння текстів. Тому я поставив питання. Сподіваюся, ви не проти.

Спасибі вам велике!

З найкращими побажаннями!
Цей коментар був мінімізований модератором на сайті
Чи є спосіб видалити всі ці виділені слова?
Цей коментар був мінімізований модератором на сайті
Привіт, Ейс,
Щоб видалити текст на основі іншої клітинки стовпця, наведений нижче код vba може допомогти вам, будь ласка, спробуйте.
Sub DeleteStr()
Dim xStr як рядок
Dim xRg As Range
Dim xTxt як рядок
Dim xCell As Range
Dim xChar як рядок
Dim i As Long
Dim J As Long
On Error Resume Next
Якщо ActiveWindow.RangeSelection.Count > 1 Тоді
xTxt = ActiveWindow.RangeSelection.AddressLocal
Ще
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
LInput:
Встановіть xRg = Application.InputBox("будь ласка, виберіть діапазон даних:", "Kutools для Excel", xTxt, , , , , 8)
Якщо xRg — нічого, вийдіть із Sub
Якщо xRg.Areas.Count > 1 Тоді
MsgBox "не підтримує кілька стовпців"
Перейдіть до LInput
End If
Якщо xRg.Columns.Count <> 2 Тоді
MsgBox "вибраний діапазон може містити лише два стовпці"
Перейдіть до LInput
End If
Для i = 0 До xRg.Rows.Count - 1
xStr = xRg.Діапазон("B1").Зміщення(i, 0).Значення
З xRg.Range("A1").Offset(i, 0)
.Font.ColorIndex = 1
Для J = 1 To Len(.Text)
Якщо Mid(.Text, J, Len(xStr)) = xStr Тоді
.Символи(J, Len(xStr)).Видалити
End If
Далі
Кінець з
Далі я
End Sub
Цей коментар був мінімізований модератором на сайті
HI
Я постійний відвідувач вашого сайту. Ваш сайт дуже корисний для мене. Цей код змінює колір шрифту. Я хочу виділити окремі слова (наприклад, Вставка, порожній) на жовтому фоні. Я хочу виділити це. Не просто колір шрифту. Так тримати!!! Велике дякую.
Цей коментар був мінімізований модератором на сайті
Привіт, Мадхусудханан,
Можливо, немає прямого способу виділення частини тексту в клітинці з кольором фону на робочому аркуші Excel.
Якщо у вас є інший хороший метод, прокоментуйте тут.
Цей коментар був мінімізований модератором на сайті
Я отримую помилку під час виконання "13", невідповідність типу, коли я запускаю сценарій. будь-які пропозиції?
Цей коментар був мінімізований модератором на сайті
У мене була така ж проблема; Я виявив, що один із моїх стовпців був формулами, і він шукав у них, що викликало помилку 13. Вибрано діапазон без формули, що містить текст для виділення, і це спрацювало.
Цей коментар був мінімізований модератором на сайті
привіт,
чи може хтось допомогти мені з наступним

мої клітинки в стовпці "G" містять текст від стовпця Z до AN, не обов'язково, щоб стовпець g містив весь текст від Z до AN.

Моя робота полягає в тому, щоб виділити текст у стовпці G, якщо він недоступний у жодній із колонок Z - AN

Наприклад: клітинка G1 містить (Привіт, сер, у мене все добре), але текст "Sir" не існує в стовпцях "Z1" до "AN1"

Тому мені потрібно виділити текст "Сер"
Цей коментар був мінімізований модератором на сайті
Привіт, будь-хто допоможіть мені в цьому. я хочу виділити конкретне число в клітинці в тому самому реченні. наприклад : " 2 дні залишити сканування " в цьому реченні потрібно виділити число.
Цей коментар був мінімізований модератором на сайті
привіт,
Будь ласка, допоможіть мені. Я хочу виділити конкретне число в тому самому реченні. Наприклад: "2 дні відпустки" хочуть виділити лише "2" у реченні.
Цей коментар був мінімізований модератором на сайті
Це було дуже корисно, дуже дякую!
Цей коментар був мінімізований модератором на сайті
Чудово. Спасибі
Цей коментар був мінімізований модератором на сайті
Оце Так! Дякую!
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця