Всем привет.
Кто подскажет. Следующая ситуация. В ячейках в Exel есть некоторый текст и в них есть повторяющие слова (характерные), в каждой ячейке. Хотелось бы каким то образом выделить эти слова полужирным шрифтом и другим цветом.
С помощью замены не получается.
Выделение некоторых слов в тексте в ячейке Exel
Модератор: Naeel Maqsudov
имеется в виду, что есть несколько ячеек с одинаковым текстом? Если да, то как определяется "характерность" ячеек?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Нет текст в ячейках разный (допустим объявления) но в них есть характерные слова, которые и нужно выделить. Таких ячеек достаточно много и в ручную выделять это достаточно конительно.
Тогда, думаю, макрос надо писать на Vba. И будет он делать примерно следующее:
1. В каждой ячейке столбца текст разбивать на слова
2. Подсчитывать, сколько раз встретилось то или иное слово.
3. Если этот счетчик заедет за какую-то величину - это слово можно считать "характерным", стало быть, выделяем его жирным
1. В каждой ячейке столбца текст разбивать на слова
2. Подсчитывать, сколько раз встретилось то или иное слово.
3. Если этот счетчик заедет за какую-то величину - это слово можно считать "характерным", стало быть, выделяем его жирным
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Kostero, Попробуйте использовать что-то вроде :
Кстати, если заменить Split("текст;формула;константа", ";") на Array("текст", "формула", "константа") то вышеопубликованный вариант можно использовать в более ранних версиях. Однако, применение функции Split позволяет задавать список нужных слов в виде строки.
Aent, Стандартные функции рабочего листа не меняют параметры форматирования.
Код: Выделить всё
Private Sub ChangeFormating() 'MS Excel 2000, …
Application.ScreenUpdating = False
For Each iWord In Split("текст;формула;константа", ";")
With ThisWorkbook.Worksheets(1)
'укажите свою книгу/лист, лист не должен быть защищён (2000), т.к.
'возможность изменения параметров форматирования нижеуказанным
'способом появилась только в MS Excel XP
'(при установке опции разрешить форматирование ячеек)
Dim iCell As Range
Set iCell = .UsedRange.Find _
(What:=iWord, LookIn:=xlValues, LookAt:=xlPart)
If Not iCell Is Nothing Then
iAddress$ = iCell.Address
Do
If Not iCell.HasFormula Then
iPosition% = InStr(iCell.Value, iWord)
'если существует вероятность, что одно слово
'может встречаться в ячейке более одного раза
'то это необходимо учесть
With iCell.Characters _
(Start:=iPosition%, Length:=Len(iWord))
.Font.Bold = True
.Font.Color = vbRed
End With
End If
Set iCell = .UsedRange.FindNext(After:=iCell)
Loop While Not iCell Is Nothing And iCell.Address <> iAddress$
End If
End With
Next
Application.ScreenUpdating = True
End Sub
Aent, Стандартные функции рабочего листа не меняют параметры форматирования.
pashulka. Спасибо програмка работает. Я сейчас погоняю ее немного по своим формативным запросам. Пока все хорошо.
pashulka.
Kostero беспокоит в принципе программка рабочая, вполне удовлетворяет. Есть маленький формальный недос-таток при выполнении этого макроса появляется окошко ошибка 91 (object variable or with block variable not set). Не-сколько раз ее игнорируем через Dedug и она работает. Как можно от этого избавиться. И еще вопрос. Можно ли вы-делить сразу несколько слов в тексе (в ячейке) находящиеся не рядышком. (Если это возможно)
Пример
Мерседес-Бенц-S500, 2000 г. в., двиг. 5.0, пробег 176 тыс. км (S500 и пробег)
И еще (я не программист только постепенно начинаю этим интересоваться), что нужно дописать перед этим макросом (public и другое, что то), что бы она была всегда занесена в макросы.
Kostero беспокоит в принципе программка рабочая, вполне удовлетворяет. Есть маленький формальный недос-таток при выполнении этого макроса появляется окошко ошибка 91 (object variable or with block variable not set). Не-сколько раз ее игнорируем через Dedug и она работает. Как можно от этого избавиться. И еще вопрос. Можно ли вы-делить сразу несколько слов в тексе (в ячейке) находящиеся не рядышком. (Если это возможно)
Пример
Мерседес-Бенц-S500, 2000 г. в., двиг. 5.0, пробег 176 тыс. км (S500 и пробег)
И еще (я не программист только постепенно начинаю этим интересоваться), что нужно дописать перед этим макросом (public и другое, что то), что бы она была всегда занесена в макросы.