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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос фильтрации таблицы по стоп словам - Мир MS Excel

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

Excel 2010
Всем доброго времени суток.
Прошу помощи в написании несложного макроса, т.к. сам я в этом профан :(

Суть:
Есть массив данных из нескольких столбцов и пары тысяч строк. Если поставить на один столбец "фильтр" и ввести стоп фразу (несколько букв или 2 слова) то покажутся (если есть) строки, которые можно выделить и удалить. Затем ввести новое слово и т.д. Но слов этих несколько сотен. И работа не разовая.

Нужно: Автоматизировать это дело макросом. Чтобы происходила фильтрация данных в ячейках заданного столбца и если в значении встречается стоп слово, то вся строка вырезалась и перетаскивалась на другую страницу или в конец этой страницы или хотя бы просто удалялась.
Надеюсь, понятно объяснил :)

Пример (на нескольких страницах) прикладываю:

Заранее спасибо :)
 
Ответить
СообщениеВсем доброго времени суток.
Прошу помощи в написании несложного макроса, т.к. сам я в этом профан :(

Суть:
Есть массив данных из нескольких столбцов и пары тысяч строк. Если поставить на один столбец "фильтр" и ввести стоп фразу (несколько букв или 2 слова) то покажутся (если есть) строки, которые можно выделить и удалить. Затем ввести новое слово и т.д. Но слов этих несколько сотен. И работа не разовая.

Нужно: Автоматизировать это дело макросом. Чтобы происходила фильтрация данных в ячейках заданного столбца и если в значении встречается стоп слово, то вся строка вырезалась и перетаскивалась на другую страницу или в конец этой страницы или хотя бы просто удалялась.
Надеюсь, понятно объяснил :)

Пример (на нескольких страницах) прикладываю:

Заранее спасибо :)

Автор - hghn66
Дата добавления - 28.07.2017 в 22:15
InExSu Дата: Суббота, 29.07.2017, 01:12 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Пример (на нескольких страницах)

не приложен :(


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Пример (на нескольких страницах)

не приложен :(

Автор - InExSu
Дата добавления - 29.07.2017 в 01:12
hghn66 Дата: Суббота, 29.07.2017, 11:18 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
не приложен

Упс, точно прикладывал... Что-то не подгрузилось.
Вот:
К сообщению приложен файл: 0598115.xlsm (21.0 Kb)
 
Ответить
Сообщение
не приложен

Упс, точно прикладывал... Что-то не подгрузилось.
Вот:

Автор - hghn66
Дата добавления - 29.07.2017 в 11:18
-=Dj=- Дата: Суббота, 29.07.2017, 14:13 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
hghn66, для вопросов о макросах есть своя ветка на форуме.
 
Ответить
Сообщениеhghn66, для вопросов о макросах есть своя ветка на форуме.

Автор - -=Dj=-
Дата добавления - 29.07.2017 в 14:13
KuklP Дата: Суббота, 29.07.2017, 15:23 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
hghn66, ну и что это за пример? Там нет ни одного совпадения. Не говоря уж о перлах типа "колбоса", "тесто слобное".


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщениеhghn66, ну и что это за пример? Там нет ни одного совпадения. Не говоря уж о перлах типа "колбоса", "тесто слобное".

Автор - KuklP
Дата добавления - 29.07.2017 в 15:23
hghn66 Дата: Суббота, 29.07.2017, 15:47 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
hghn66, ну и что это за пример? Там нет ни одного совпадения. Не говоря уж о перлах типа "колбоса", "тесто слобное".

По правилам форума я бы даже не смог опубликовать реальный пример.
В общем-то столбцы и заголовки можно двигать как угодно, если это облегчит исполнение. Стоп слова можно хранить хоть в отдельном блокнотике, хоть засунуть в 1 ячейки, отделив "", это тоже не влияет ни на что. К тому же они постоянно редактируются.
В примере, кстати, совпадения типо уже отбракованы и находятся на 2 странице :)
Совпадения по стоп словам, в теории может и не быть вовсе.
И фильтрация по сути идет по одному из столбцов, в котором могут быть перлы и повеселее...

P.s. Извиняюсь, если что не так. Хотел сделать максимально просто и наглядно, в реальной жизни все несколько более унылое. Мне бы хоть самый простецкий образец с 2 стоп словами и 3 строками данных увидеть. А то я в excel дуб дубом, но по аналогии уже не сложно...
Чуть изменил, теперь совпадения есть, но за бред сорри, такие дела...
К сообщению приложен файл: 3218071.xlsm (21.3 Kb)
 
Ответить
Сообщение
hghn66, ну и что это за пример? Там нет ни одного совпадения. Не говоря уж о перлах типа "колбоса", "тесто слобное".

По правилам форума я бы даже не смог опубликовать реальный пример.
В общем-то столбцы и заголовки можно двигать как угодно, если это облегчит исполнение. Стоп слова можно хранить хоть в отдельном блокнотике, хоть засунуть в 1 ячейки, отделив "", это тоже не влияет ни на что. К тому же они постоянно редактируются.
В примере, кстати, совпадения типо уже отбракованы и находятся на 2 странице :)
Совпадения по стоп словам, в теории может и не быть вовсе.
И фильтрация по сути идет по одному из столбцов, в котором могут быть перлы и повеселее...

P.s. Извиняюсь, если что не так. Хотел сделать максимально просто и наглядно, в реальной жизни все несколько более унылое. Мне бы хоть самый простецкий образец с 2 стоп словами и 3 строками данных увидеть. А то я в excel дуб дубом, но по аналогии уже не сложно...
Чуть изменил, теперь совпадения есть, но за бред сорри, такие дела...

Автор - hghn66
Дата добавления - 29.07.2017 в 15:47
KuklP Дата: Суббота, 29.07.2017, 16:59 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Public Sub www()
    Dim i&, a, r As Range
    Application.ScreenUpdating = 0
    a = Sheets("Стоп слова").[a1].CurrentRegion.Value
    On Error Resume Next
    With Sheets("Лист1")
        Set r = Range(.[d1], .[d65536].End(xlUp))
        For i = 1 To UBound(a)
            r.AutoFilter 1, "*" & a(i, 1) & "*", , , 0
            If r.SpecialCells(12).Count > 1 Then _
               r.Offset(1).SpecialCells(12).EntireRow.Delete
        Next
        .AutoFilterMode = 0
        Application.ScreenUpdating = -1
    End With
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Public Sub www()
    Dim i&, a, r As Range
    Application.ScreenUpdating = 0
    a = Sheets("Стоп слова").[a1].CurrentRegion.Value
    On Error Resume Next
    With Sheets("Лист1")
        Set r = Range(.[d1], .[d65536].End(xlUp))
        For i = 1 To UBound(a)
            r.AutoFilter 1, "*" & a(i, 1) & "*", , , 0
            If r.SpecialCells(12).Count > 1 Then _
               r.Offset(1).SpecialCells(12).EntireRow.Delete
        Next
        .AutoFilterMode = 0
        Application.ScreenUpdating = -1
    End With
End Sub
[/vba]

Автор - KuklP
Дата добавления - 29.07.2017 в 16:59
hghn66 Дата: Суббота, 29.07.2017, 17:55 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо за помощь, очень выручили hands
Погонял немного на примерах, вроде все отлично :)
Set r = Range(.[d1], .[d65536].End(xlUp))

Как я понял [d65536] - это номер последней для анализа строки? Можно забить условный миллион и забыть, я верно понял?

А возможно, чтобы все вырезанное переносилось на Лист2?
Или на 10.000 строку и далее?

Хотя и так Вы спаси сотни моих идиото-часов :D
 
Ответить
СообщениеСпасибо за помощь, очень выручили hands
Погонял немного на примерах, вроде все отлично :)
Set r = Range(.[d1], .[d65536].End(xlUp))

Как я понял [d65536] - это номер последней для анализа строки? Можно забить условный миллион и забыть, я верно понял?

А возможно, чтобы все вырезанное переносилось на Лист2?
Или на 10.000 строку и далее?

Хотя и так Вы спаси сотни моих идиото-часов :D

Автор - hghn66
Дата добавления - 29.07.2017 в 17:55
KuklP Дата: Суббота, 29.07.2017, 20:17 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
[vba]
Код
Public Sub www()
    Dim i&, a, r As Range
    Application.ScreenUpdating = 0
    a = Sheets("Стоп слова").[a1].CurrentRegion.Value
    On Error Resume Next
    Set r = Range(Sheets("Лист1").[d1], Sheets("Лист1").[d65536].End(xlUp))
    For i = 1 To UBound(a)
        r.AutoFilter 1, "*" & a(i, 1) & "*", , , 0
        If r.SpecialCells(12).Count > 1 Then
            With r.Offset(1).SpecialCells(12).EntireRow
                .Copy Sheets("Брак").[a65536].End(xlUp)(2)
                .Delete
            End With
        End If
    Next
    r.AutoFilter 1
    Application.ScreenUpdating = -1
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение[vba]
Код
Public Sub www()
    Dim i&, a, r As Range
    Application.ScreenUpdating = 0
    a = Sheets("Стоп слова").[a1].CurrentRegion.Value
    On Error Resume Next
    Set r = Range(Sheets("Лист1").[d1], Sheets("Лист1").[d65536].End(xlUp))
    For i = 1 To UBound(a)
        r.AutoFilter 1, "*" & a(i, 1) & "*", , , 0
        If r.SpecialCells(12).Count > 1 Then
            With r.Offset(1).SpecialCells(12).EntireRow
                .Copy Sheets("Брак").[a65536].End(xlUp)(2)
                .Delete
            End With
        End If
    Next
    r.AutoFilter 1
    Application.ScreenUpdating = -1
End Sub
[/vba]

Автор - KuklP
Дата добавления - 29.07.2017 в 20:17
vik313 Дата: Четверг, 19.07.2018, 21:43 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток!

Возможно ли изменить макрос выше, что бы фильтрация и копирование отфильтрованного происходило только при точном совпадении слов на листе "стоп слова"
 
Ответить
СообщениеДоброго времени суток!

Возможно ли изменить макрос выше, что бы фильтрация и копирование отфильтрованного происходило только при точном совпадении слов на листе "стоп слова"

Автор - vik313
Дата добавления - 19.07.2018 в 21:43
_Boroda_ Дата: Четверг, 19.07.2018, 22:34 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Уберите две звездочки в коде
[vba]
Код
r.AutoFilter 1, a(i, 1), , , 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУберите две звездочки в коде
[vba]
Код
r.AutoFilter 1, a(i, 1), , , 0
[/vba]

Автор - _Boroda_
Дата добавления - 19.07.2018 в 22:34
vik313 Дата: Пятница, 20.07.2018, 10:07 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Уберите две звездочки в коде


Попробовал - работает только с текстовым форматом. А как быть, если данные числовые?
 
Ответить
Сообщение
Уберите две звездочки в коде


Попробовал - работает только с текстовым форматом. А как быть, если данные числовые?

Автор - vik313
Дата добавления - 20.07.2018 в 10:07
_Boroda_ Дата: Пятница, 20.07.2018, 10:15 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Очень просто - прочитать Правила форума и приложить свой файл


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеОчень просто - прочитать Правила форума и приложить свой файл

Автор - _Boroda_
Дата добавления - 20.07.2018 в 10:15
vik313 Дата: Пятница, 20.07.2018, 12:24 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Нужна модификация макроса, который используется в этой статье.

На листе KV в колонке А содержатся числовые значения, на основе которых фильтруются данные колонки H листа Список. После фильтрации значения колонок (U, K, PL, Kl) копируются на слой Брак.
К сообщению приложен файл: 5866007.xlsm (53.1 Kb)


Сообщение отредактировал vik313 - Пятница, 20.07.2018, 12:29
 
Ответить
СообщениеНужна модификация макроса, который используется в этой статье.

На листе KV в колонке А содержатся числовые значения, на основе которых фильтруются данные колонки H листа Список. После фильтрации значения колонок (U, K, PL, Kl) копируются на слой Брак.

Автор - vik313
Дата добавления - 20.07.2018 в 12:24
_Boroda_ Дата: Пятница, 20.07.2018, 13:00 | Сообщение № 15
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Тогда так
[vba]
Код
r.AutoFilter 1, "" & a(i, 1), , , 0
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТогда так
[vba]
Код
r.AutoFilter 1, "" & a(i, 1), , , 0
[/vba]

Автор - _Boroda_
Дата добавления - 20.07.2018 в 13:00
vik313 Дата: Пятница, 20.07.2018, 13:31 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Ооо, то, что нужно!

Спасибо!
 
Ответить
СообщениеОоо, то, что нужно!

Спасибо!

Автор - vik313
Дата добавления - 20.07.2018 в 13:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос фильтрации таблицы по стоп словам (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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