Выделение заданного фрагмента текста в ячейке |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Как выделить определенный текст в ячейке на основе другого текста?
В Excel нам может быть легко выделить ячейки на основе определенного текста, но здесь я хочу выделить определенный текст в ячейке, чтобы сделать его выдающимся, но не всю ячейку. Для большинства из нас это, возможно, неприятно. В этой статье я расскажу о некоторых хитростях для решения этой задачи в Excel.
Выделите один или несколько конкретных текстов в нескольких ячейках с кодом VBA
Например, у меня есть ряд текстовых строк, и теперь я хочу выделить конкретный текст «Небо”В этих ячейках, чтобы получить результат, как показано на следующих снимках экрана:
Чтобы выделить только часть текста в ячейке, вам может помочь следующий код VBA.
1. Выберите ячейки, в которых вы хотите выделить конкретный текст, а затем удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код 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 , весь указанный вами текст был выделен только внутри ячеек, см. снимок экрана:
Tips: Если вам нужно выделить несколько ключевых слов из текстовых строк, примените приведенный ниже код:
Код 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 for Excel, С его Отметить ключевое слово вы можете выделить одно или несколько ключевых слов сразу в ячейках.
Примечание:Чтобы применить эти Отметить ключевое слово функции, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените функции.
После установки Kutools for Excel, пожалуйста, сделайте следующее:
1. Нажмите Кутулс > Текст > Отметить ключевое слово, см. снимок экрана:
2. В Отметить ключевое слово диалоговом окне выполните следующие действия:
- Выберите диапазон данных, который вы хотите использовать, из Диапазон текстовое окно;
- Выберите ячейки, содержащие ключевые слова, которые вы хотите выделить, вы также можете ввести ключевые слова вручную (через запятую) в поле Ключевое слово текстовое поле.
- Наконец, вы должны указать цвет шрифта для выделения текста галочкой Отметить цвета ключевых слов вариант. (Чтобы раскрасить все ячейки, содержащие ключевые слова, выберите Отметьте цвета содержимого ячейки опция)
3, Затем нажмите Ok кнопки, все указанные тексты были выделены, как показано ниже:
Внимание: Эта функция не чувствительна к регистру, если вы хотите выделить текст с учетом регистра, установите флажок С учетом регистра в Отметить ключевое слово диалоговое окно.
Выделите определенный текст в ячейке на основе другого текста с помощью кода VBA
Вот еще одна ситуация, у меня есть два столбца, первый столбец которых содержит текстовые строки, а второй столбец — это конкретный текст, теперь мне нужно выделить относительный текст в первом столбце на основе определенного текста во втором столбце для каждого ряд.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код 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 for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
I am wrote a macro that checks for changes to certain cells. If the new value in a cell doesn’t meet certain criteria, it enters the cell in edit mode and selects all text in that cell using keyboard shortcuts:
Application.SendKeys ("{HOME}+{END}")
This always enters edit mode, but often fails to select the text. I’m looking for something more reliable. Any ideas?
Here’s the entire macro:
Private Sub Worksheet_Change(ByVal Target As Range)
' -------------------------------
' Only run the macro if a single cell is selected
If Target.Cells.CountLarge > 1 Then Exit Sub
' -------------------------------
' Declare variables
Dim cell As Range
Dim AccountToFind As String
' -------------------------------
' Assign values to shared variables
AccountToFind = Target.Value
' -------------------------------
' Validate change in HEADER, column D
If Not Intersect(Target, Target.Worksheet.Range("D:D")) Is Nothing And Target.Value <> "" Then
For Each cell In Sheets("_coding references").Range("AccountsPayable[NAME]")
If cell.Value = AccountToFind Then Exit Sub ' passed validation
Next cell
Target.Select
MsgBox ("'" & AccountToFind & "'" & vbNewLine & vbNewLine & "This is not a listed A/P account!")
' --------------------------------------------------------------
' --------------------------------------------------------------
' HERE'S THE PROBLEMATIC CODE
' --------------------------------------------------------------
Application.SendKeys ("{F2}{HOME}+{END}")
' --------------------------------------------------------------
' --------------------------------------------------------------
' --------------------------------------------------------------
End If
End Sub
asked Aug 17, 2016 at 20:12
Sadly, there is no way to catch this event. Your only way to go is «sending keys,» and since all of them have to be pressed at the same time, this is the best workaround -to my knowledge- that you can do: either use sleep or wait function.
Application.SendKeys ("{F2}{HOME}")
Application.Wait Now + TimeValue("00:00:01")
Application.SendKeys ("+{END}")
Explanation
Sending keys relies on the processor speed, so it will always be variable. Even if the code is well written, you have to consider some time to let it «press» -virtually- all the keys at the same time.
answered Aug 17, 2016 at 21:32
SgdvaSgdva
2,7453 gold badges17 silver badges28 bronze badges
1
astera 0 / 0 / 0 Регистрация: 16.11.2012 Сообщений: 3 |
||||
1 |
||||
Как выделить отдельные слова в ячейке16.11.2012, 18:06. Показов 3437. Ответов 4 Метки нет (Все метки)
Прошу помочь с программой. Спасибо!!!
0 |
Romas654 117 / 31 / 2 Регистрация: 16.11.2012 Сообщений: 65 |
||||||
16.11.2012, 19:09 |
2 |
|||||
Держи. В приложении то же самое с несколькими строками на листе
Вложения
1 |
0 / 0 / 0 Регистрация: 16.11.2012 Сообщений: 3 |
|
17.11.2012, 02:14 [ТС] |
3 |
Спасибо! Да уж, мне до такого уровня расти и расти…
0 |
0 / 0 / 0 Регистрация: 16.11.2012 Сообщений: 3 |
|
19.11.2012, 16:35 [ТС] |
4 |
А если в строке в каждой ячейке представлены следующие данные: «№ Горящая Ф.И.», например: 1230 Горящая Иванова Екатерина С помощью программы, написанной Romas654, можно выделить красным цветом слово «Горящая». А как можно выделить этим же цветом Ф.И., чтобы было так: 1230 Горящая Иванова Екатерина Спасибо!!! Добавлено через 9 минут
0 |
Romas654 117 / 31 / 2 Регистрация: 16.11.2012 Сообщений: 65 |
||||||
20.11.2012, 07:57 |
5 |
|||||
Изменена функция. Ищет слово FStr, красит его и еще два следующих за ним слова
Вложения
1 |
Есть похожий вопрос на английском: Highlighting searched words on Vba excel
Единственная разница, в том вопросе ищется одно слово.
Адаптируем код из этого вопроса, выделим его в процедуру, вынесем все искомые значения в массив и будем вызывать процедуру в цикле:
'Выделяет заданный текст в заданном диапазоне
'Адаптирован код из ответа на Stack Overflow: https://stackoverflow.com/questions/35437207/highlighting-searched-words-on-vba-excel
Sub HighlighText(rng As Range, text As String)
Application.ScreenUpdating = False
Dim cellRange As Range
'Ищем текст на листе
Set cellRange = rng.Find(What:=text, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not cellRange Is Nothing Then
Dim cellAddress As String
cellAddress = cellRange.Address
Do
Dim textStart As Integer
textStart = 1
Do
'Ищем текст внутри ячейки
'Если требуется поиск нечувствительный к регистру, то можно привести и искомое значение и текст к нижнему регистру
'textStart = InStr(textStart, LCase(cellRange.Value), LCase(text))
textStart = InStr(textStart, cellRange.Value, text)
If textStart <> 0 Then
'Выделяем текст
cellRange.Characters(textStart, Len(text)).Font.Color = RGB(255, 0, 0)
textStart = textStart + 1
End If
'Выделяем текст пока он находится в этой ячейке
Loop Until textStart = 0
Set cellRange = rng.FindNext(After:=cellRange)
Loop Until cellRange Is Nothing Or cellRange.Address = cellAddress
End If
End Sub
Sub FindAndSelect()
'Массив слов (терминов) для выделения
Dim termsToHighlight As Variant
termsToHighlight = Array("teams", "TechnicalSuit", "Captivate", "Subscription", "Creative Cloud", "renewal", "TLP", "Stock", "Dreamweave", "CLP", _
"Spark", "FrameMaker", "Premiere Pro", "Illustrator", "Fresco", "InCopy", "enterprise", "Audition", "InDesign", "Flash", "Dimension", _
"Lightroom", "Substance", "After Effects", "Photoshop", "XD", "Animate", "Presenter", "RoboHelp")
Dim workRange As Range
Set workRange = ActiveWorkbook.Worksheets("TDSheet").Range("A1:A3000")
For Each term In termsToHighlight
HighlighText workRange, CStr(term)
Next term
End Sub
Если нужно выделять слова вне зависимости от регистра («Teams», «xd» и др.), то можно исправить функцию поиска текста, читайте комментарии.
И наоборот, если нужно искать слова именно с таким регистром, то можно проставить MatchCase:=True
.
В принципе список терминов для выделения можно хранить не в коде, а где-нибудь в самой книге Excel.