Страницы: 1
RSS
В другом диапазоне найти слово, которое входит в текст, но может иметь другое окончание
 
Подскажите как сделать: Имеются два диапазона, один столбец длинее другого, нужно взять слово со второго столбца и сопоставить его с первым, в первом текст состоящий из нескольких слов. Нужно сопоставить и если слово из второго столбца встречается в первом подсветить или выделить.
 
От Вас небольшой файл-пример согласно Правил.
 
Берём слово из второго столбца, отсекаем от него окончание.
Проходим по всем ячейкам первого столбца, проверяя их на вхождение искомого слова.

Для отсекания окончания, возможно, потребуется некоторый семантический анализ:
стол - столА, столЫ. столОМ, столАМИ - необходимо отсеч 1, 2, 3 знака
 
Прицепил пример
 
нет таких слов в примере в столбце А, а вот если порезать окончания то тогда будут
Лень двигатель прогресса, доказано!!!
 
Спс, а данная формула не сопоставляет весь список отдельных слов например с первой позицией столбца. то есть должен браться весь список слов и сопоставляться с каждым текстом первого столбца. Думаю понятно объяснил?
 
Окончания обрезайте самостоятельно
 
Что я делаю не так, что данный макрос не отрабатывает на другом списке?
Оригинальный файл - https://dropmefiles.com/YZPzh

С другими данными - https://dropmefiles.com/xwaVf
 
Там в макросе жестко привязан диапазон, мне лень было делать универсально.
Или сделайте определение диапазона динамическим или просто поправте в коде макроса на те диапазоны, которые у Вас.
 
Не жмите бестолково на кнопку цитирования [МОДЕРАТОР]

я сделал так
Код
Option Explicit
Option Compare Text
Sub iii()
Dim c1 As Range, c2 As Range, iStart As Integer

    For Each c1 In Range("A1:A99999")
        For Each c2 In Range("E1:E99999")
            If c1 Like "*" & c2 & "*" Then
                iStart = InStr(c1.Value, c2)
                With c1.Characters(Start:=iStart, Length:=Len(c2)).Font
                    .Bold = True
                    .Color = RGB(0, 0, 255)
                End With
            End If
        Next
    Next

End Sub

Правильно?
Изменено: vikttur - 26.07.2021 21:34:11
 
если в обоих списках по 100 000 то да, но работать архидолго будет...
 
СРАВНЕНИЕ ТЕКСТА ПО ЧАСТИ ПРЕДЛОЖЕНИЯ
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 

Это

Код
For Each c1 In Range("A1:A99999")
        For Each c2 In Range("E1:E99999")
замените на это
Код
For Each c1 In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
        For Each c2 In Range("E1:E" & Cells(Rows.Count, 5).End(xlUp).Row)
 
Андрей_26, тогда уж лучше вычислить lastrow для 1го и 5го столбца ПЕРЕД циклом. Хотя бы для 5 го, иначе "прыгать" будет столько раз, сколько lastRow для 1го столбца
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Читают тему (гостей: 1)
Наверх