Страницы: 1
RSS
Множественный поиск текста - по нескольким ключевым словам.
 
Добрый вечер, программисты экселя.
Помогите разобраться.

В книге на листах в некоторых разных ячейках находится различный текст.
В листе "ПОИСК" в столбце D6:D34 - находятся ключевые слова, по которым надо провести поиск - по остальным листам книги.

Как макросом осуществить множественный поиск текста содержащие совпадения этих слов и вывести результат в столбец I6:I34 ?
(Сперва ищутся все сочетания слов - в данном случае - по трем ключевым словам. Потом ищутся сочетания всех слов, кроме последнего в столбце - в данном случае - двух ключевых слов. Последним ищется - наличие одного - самого первого ключевого слова)
В файле - я показал, как примерно проходит поиск и куда выводится результат.
Изменено: Dim Ozerov - 08.09.2017 15:39:53
 
Делаете цикл по всем листам, кроме листа ПОИСК.
Ищите первое ключевое слово, если нашли, то проверяете,
есть ли в ячейке второе ключевое слово и третье. Если все условия
выполняются, то записываете значение ячейки на лист ПОИСК
 
Kuzmich, а как примерно такой код должен выглядеть ?
 
Для трех ключевых слов, остальное попробуйте сами
Код
Sub KeyWord()
Dim Sht As Worksheet
Dim i As Long
Dim n As Integer
Dim FoundCell As Range
Dim FAdr As String
Application.ScreenUpdating = False
    i = 6
    n = 3   'для трех ключевых слов
  For Each Sht In Worksheets
    If Sht.Name <> "ПОИСК" Then        ' кроме листа "ПОИСК"
      With Sht
       Set FoundCell = .UsedRange.Find(Range("D6"), , xlValues, xlPart)
        If Not FoundCell Is Nothing Then  'нашли ячейку с первым ключевым словом
           FAdr = FoundCell.Address       'запоминаем адрес этой ячейки
         Do             'проверяем есть ли в ячейке второе и третье ключевое слово
           If InStr(1, FoundCell, Range("D7")) <> 0 And InStr(1, FoundCell, Range("D8")) <> 0 Then
             Cells(i, "H") = n
             Cells(i, "I") = FoundCell
             i = i + 1
           End If
             Set FoundCell = .UsedRange.Find(Range("D6"), After:=FoundCell)
         Loop While FoundCell.Address <> FAdr
        End If
      End With
    End If
    Set FoundCell = Nothing
  Next
Application.ScreenUpdating = True
End Sub
 
Kuzmich, теперь все стало понятно.
Спасибо за содержательный ответ.
Страницы: 1
Читают тему
Наверх