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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос: поиск слов в диапазоне и удаление предложений с - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос: поиск слов в диапазоне и удаление предложений с (Формулы/Formulas)
Макрос: поиск слов в диапазоне и удаление предложений с
Andronomus Дата: Суббота, 07.01.2017, 22:49 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день.

Очень нужна помощь в создании макроса:

На Листе1 в столбцеА есть список слов/цифр (могут быть любые значения, могут располагаться не сплошняком, т.е. через две/три ячейки),
На листе 2 есть список предложений,
По запуску макроса нужно удалить все предложения с Листа2, в которых содержатся все слова/значения Листа1/столбецА (слово может быть в любой части предложения, или предложение может быть лишь этим словом).
Те предложения, которые удалили, нужно вывести списком в Лист3/Столбец1 (этот список нужно не перезаписывать при каждом нажатии, а добавлять в конец списка), т.е. если добавить еще 1 слово в Лист1 и нажать кнопку, макрос найдет это слово в предложении Листа2, удалит его с Листа2 и допишет в Ссписок Листа3.

Файл прикрепил
Спасибо заранее)))
К сообщению приложен файл: ___.xlsx (9.9 Kb)
 
Ответить
СообщениеДобрый день.

Очень нужна помощь в создании макроса:

На Листе1 в столбцеА есть список слов/цифр (могут быть любые значения, могут располагаться не сплошняком, т.е. через две/три ячейки),
На листе 2 есть список предложений,
По запуску макроса нужно удалить все предложения с Листа2, в которых содержатся все слова/значения Листа1/столбецА (слово может быть в любой части предложения, или предложение может быть лишь этим словом).
Те предложения, которые удалили, нужно вывести списком в Лист3/Столбец1 (этот список нужно не перезаписывать при каждом нажатии, а добавлять в конец списка), т.е. если добавить еще 1 слово в Лист1 и нажать кнопку, макрос найдет это слово в предложении Листа2, удалит его с Листа2 и допишет в Ссписок Листа3.

Файл прикрепил
Спасибо заранее)))

Автор - Andronomus
Дата добавления - 07.01.2017 в 22:49
Kuzmich Дата: Воскресенье, 08.01.2017, 12:56 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Макрос в стандартный модуль, запускать при активном листе Лист1
[vba]
Код

Sub Poisk()
Dim List3 As Worksheet
Dim Slovo As String
Dim MyArr
Dim i As Integer
Dim iLastRow As Integer
Dim j As Integer
Dim iLR_2 As Integer
Dim iLR_3 As Integer
Dim k As Integer
  Set List3 = ThisWorkbook.Worksheets("Лист3")
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  With Worksheets("Лист2")
    For i = 2 To iLastRow
       iLR_2 = .Cells(Rows.Count, "A").End(xlUp).Row
      If Not IsEmpty(Cells(i, "A")) Then
          Slovo = Cells(i, "A")
        For j = iLR_2 To 2 Step -1
          If InStr(1, .Cells(j, "A"), Slovo) <> 0 Then
            MyArr = Split(.Cells(j, "A"), " ")
            For k = 0 To UBound(MyArr)
              If MyArr(k) = Slovo Then
                iLR_3 = List3.Cells(List3.Rows.Count, "A").End(xlUp).Row + 1
                List3.Cells(iLR_3, "A") = .Cells(j, "A")
                .Rows(j).Delete
                Exit For
              End If
            Next
          End If
        Next
      End If
    Next
  End With
End Sub
[/vba]
 
Ответить
СообщениеМакрос в стандартный модуль, запускать при активном листе Лист1
[vba]
Код

Sub Poisk()
Dim List3 As Worksheet
Dim Slovo As String
Dim MyArr
Dim i As Integer
Dim iLastRow As Integer
Dim j As Integer
Dim iLR_2 As Integer
Dim iLR_3 As Integer
Dim k As Integer
  Set List3 = ThisWorkbook.Worksheets("Лист3")
    iLastRow = Cells(Rows.Count, "A").End(xlUp).Row
  With Worksheets("Лист2")
    For i = 2 To iLastRow
       iLR_2 = .Cells(Rows.Count, "A").End(xlUp).Row
      If Not IsEmpty(Cells(i, "A")) Then
          Slovo = Cells(i, "A")
        For j = iLR_2 To 2 Step -1
          If InStr(1, .Cells(j, "A"), Slovo) <> 0 Then
            MyArr = Split(.Cells(j, "A"), " ")
            For k = 0 To UBound(MyArr)
              If MyArr(k) = Slovo Then
                iLR_3 = List3.Cells(List3.Rows.Count, "A").End(xlUp).Row + 1
                List3.Cells(iLR_3, "A") = .Cells(j, "A")
                .Rows(j).Delete
                Exit For
              End If
            Next
          End If
        Next
      End If
    Next
  End With
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 08.01.2017 в 12:56
Andronomus Дата: Воскресенье, 08.01.2017, 15:42 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Макрос в стандартный модуль, запускать при активном листе Лист1


Все работает. Спасибо Большое за помощь)
 
Ответить
Сообщение
Макрос в стандартный модуль, запускать при активном листе Лист1


Все работает. Спасибо Большое за помощь)

Автор - Andronomus
Дата добавления - 08.01.2017 в 15:42
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос: поиск слов в диапазоне и удаление предложений с (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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