Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выборочная подсветка текста - по значению в диапазоне - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выборочная подсветка текста - по значению в диапазоне
mv6677 Дата: Суббота, 30.09.2017, 19:02 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер, уважаемые специалисты по VBA.
Помогите решить непростую проблему.

Есть определенный текст, вписанный на лист экселя - построчно.
Между абзацами этого текста - есть пустые строки.
Как макросом - подсвечивать ключевые слова соответствующего диапазона - если границы этого диапазона - соответствуют названиям заголовков столбцов ?

То есть - если - в начале и в конце определенного абзаца - поставить текст (код1),(-код1) - то в тексте этого абзаца - будут подсвечиваться слова вписанные в столбец1.
А если - в начале и в конце другого абзаца - поставить текст (код2),(-код2) - то в тексте этого конкретного абзаца - будут подсвечиваться слова вписанные в столбец2.
К сообщению приложен файл: 1969378.xls (43.0 Kb)
 
Ответить
СообщениеДобрый вечер, уважаемые специалисты по VBA.
Помогите решить непростую проблему.

Есть определенный текст, вписанный на лист экселя - построчно.
Между абзацами этого текста - есть пустые строки.
Как макросом - подсвечивать ключевые слова соответствующего диапазона - если границы этого диапазона - соответствуют названиям заголовков столбцов ?

То есть - если - в начале и в конце определенного абзаца - поставить текст (код1),(-код1) - то в тексте этого абзаца - будут подсвечиваться слова вписанные в столбец1.
А если - в начале и в конце другого абзаца - поставить текст (код2),(-код2) - то в тексте этого конкретного абзаца - будут подсвечиваться слова вписанные в столбец2.

Автор - mv6677
Дата добавления - 30.09.2017 в 19:02
SLAVICK Дата: Воскресенье, 01.10.2017, 00:28 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Как макросом - подсвечивать ключевые слова соответствующего диапазона

Сделал пользовательскую функцию:
[vba]
Код
Function ColoringWordsByList(RangeToColoring As Range, TegName$, ListRange, Optional ColorExampleCell As Range) As Long
Dim dic As Object, i&, ii&, n&, t&, tt&, RangeToColoringARR, ListRangeArr, b As Boolean
Dim columnTeg&, columnText&, tRangeToColoring As Range
Application.Volatile
If ColorExampleCell Is Nothing Then ColorN = -16776961 Else ColorN = ColorExampleCell.Font.Color
If TypeName(ListRange) = "Range" Then ListRangeArr = ListRange.Value
If TypeName(ListRangeArr) = "String" Then ReDim ListRangeArr(1 To 1, 1 To 1): ListRangeArr(1, 1) = ListRange.Value
RangeToColoringARR = RangeToColoring.Value
For i = 1 To UBound(RangeToColoringARR)
    For ii = 1 To UBound(RangeToColoringARR, 2)
            If b Then
                For t = 1 To UBound(ListRangeArr)
                     For tt = 1 To UBound(ListRangeArr, 2)
                     If Len(ListRangeArr(t, tt)) Then n = InStr(1, RangeToColoringARR(i, ii), ListRangeArr(t, tt)) Else n = 0
                        Do While n > 0
                            Set tRangeToColoring = RangeToColoring(i, ii)
                            tRangeToColoring.Characters(Start:=n, Length:=Len(ListRangeArr(t, tt))).Font.Color = ColorN
                            n = InStr(n + 1, RangeToColoringARR(i, ii), ListRangeArr(t, tt))
                            ColoringWordsByList = ColoringWordsByList + 1
                        Loop
                     Next
                Next
                b = InStr(1, RangeToColoringARR(i, ii), "(-" & TegName & ")") = 0
            Else
            b = InStr(1, RangeToColoringARR(i, ii), "(" & TegName & ")") > 0
            End If
    Next
Next
End Function
[/vba]

Она красит слова по критериям + считает количество слов, которые нужно подкрасила.
Для каждого тега - нужна отдельная формула - см. зеленые ячейки.
Цвет закраски слов - берется из донорской ячейки(в данном случае с цветов ячеек с тегами)
Функцию сделал волатильной - после изменения цвета - можно нажать F9 - слова перекрасятся.
К сообщению приложен файл: 1969378.xlsm (18.5 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Как макросом - подсвечивать ключевые слова соответствующего диапазона

Сделал пользовательскую функцию:
[vba]
Код
Function ColoringWordsByList(RangeToColoring As Range, TegName$, ListRange, Optional ColorExampleCell As Range) As Long
Dim dic As Object, i&, ii&, n&, t&, tt&, RangeToColoringARR, ListRangeArr, b As Boolean
Dim columnTeg&, columnText&, tRangeToColoring As Range
Application.Volatile
If ColorExampleCell Is Nothing Then ColorN = -16776961 Else ColorN = ColorExampleCell.Font.Color
If TypeName(ListRange) = "Range" Then ListRangeArr = ListRange.Value
If TypeName(ListRangeArr) = "String" Then ReDim ListRangeArr(1 To 1, 1 To 1): ListRangeArr(1, 1) = ListRange.Value
RangeToColoringARR = RangeToColoring.Value
For i = 1 To UBound(RangeToColoringARR)
    For ii = 1 To UBound(RangeToColoringARR, 2)
            If b Then
                For t = 1 To UBound(ListRangeArr)
                     For tt = 1 To UBound(ListRangeArr, 2)
                     If Len(ListRangeArr(t, tt)) Then n = InStr(1, RangeToColoringARR(i, ii), ListRangeArr(t, tt)) Else n = 0
                        Do While n > 0
                            Set tRangeToColoring = RangeToColoring(i, ii)
                            tRangeToColoring.Characters(Start:=n, Length:=Len(ListRangeArr(t, tt))).Font.Color = ColorN
                            n = InStr(n + 1, RangeToColoringARR(i, ii), ListRangeArr(t, tt))
                            ColoringWordsByList = ColoringWordsByList + 1
                        Loop
                     Next
                Next
                b = InStr(1, RangeToColoringARR(i, ii), "(-" & TegName & ")") = 0
            Else
            b = InStr(1, RangeToColoringARR(i, ii), "(" & TegName & ")") > 0
            End If
    Next
Next
End Function
[/vba]

Она красит слова по критериям + считает количество слов, которые нужно подкрасила.
Для каждого тега - нужна отдельная формула - см. зеленые ячейки.
Цвет закраски слов - берется из донорской ячейки(в данном случае с цветов ячеек с тегами)
Функцию сделал волатильной - после изменения цвета - можно нажать F9 - слова перекрасятся.

Автор - SLAVICK
Дата добавления - 01.10.2017 в 00:28
mv6677 Дата: Воскресенье, 01.10.2017, 01:00 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 3 ±
Замечаний: 0% ±

Excel 2013
SLAVICK, большое спасибо.
Я думаю такое решение - мне подойдет.
 
Ответить
СообщениеSLAVICK, большое спасибо.
Я думаю такое решение - мне подойдет.

Автор - mv6677
Дата добавления - 01.10.2017 в 01:00
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!