Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 11
1

Удаление содержимого ячеек, в которых нет ключевых фраз

12.10.2013, 12:14. Показов 1306. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста с проблемой
Корректирую макрос в excel, необходимо чтобы удалялось содержимое ячеек, в которых нет ключевых фраз.

Есть код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function ПоискячеекПоУсловию(ByVal ТекстДляПоиска As String, Optional HideOnly As Boolean) As Long
     ' функция получает в качестве параметра ТекстДляПоиска (можно использовать символы * и ?)
    ' Если HideOnly = TRUE, то строки, содержащие в ячейках ТекстДляПоиска, скрываются,
    ' иначе (HideOnly = FALSE - по умолчанию) - удаляются
    ' Функция возвращает количество удалённых ячеек
    Dim ra As Range, delra As Range
     Application.ScreenUpdating = False    ' отключаем обновление экрана
 
     ' перебираем все ячейки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange
         ' если в строке найден искомый текст
        If ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
             ' добавляем ячейку в диапазон для удаления
            If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
         End If
     Next
     On Error Resume Next: ПоискСтрокПоУсловию = delra.Areas.Count ' количество найденных строк
    
     If Not delra Is Nothing Then    ' если подходящие ячейки найдены - скрываем или удаляем их
        If HideOnly Then delra.ClearContents = True Else delra.ClearContents
     End If
End Function
Проблема с объединенными ячейками. Удаляются даже те, в которых есть ключевая фраза.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2013, 12:14
Ответы с готовыми решениями:

Удалять те листы в книге, на которых нет ключевых фраз
Здравствуйте, подскажите с следующей задачей: необходимо удалять те листы в книге, на которых нет...

Удаление ячеек в которых 2 символа
Добрый день! Имеется excel файл напечатанного ниже формата: Все ячейки - свойства товаров; ...

Удаление строк, в которых содержится текст из других ячеек
Добрый день! Подскажите пожалуйста, как сделать: Есть книга с двумя листами. Лист: Сотрудники....

Вывести значения ячеек из одного диапазона которых нет в другом диапазоне
Друзья помогите! Есть диапазон №1 из 4-х строк 1 столбца с текстовыми значениями A, B, C, D...

4
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
12.10.2013, 13:10 2
Цитата Сообщение от werom Посмотреть сообщение
ПоискячеекПоУсловию
Цитата Сообщение от werom Посмотреть сообщение
ПоискСтрокПоУсловию
Похоже, изначально функция называлась по-другому, и соответственно работает по старому и удаляет\скрывает строки, а не ячейки



Цитата Сообщение от werom Посмотреть сообщение
' если в строке найден искомый текст
Цитата Сообщение от werom Посмотреть сообщение
' добавляем ячейку в диапазон для удаления
Цитата Сообщение от werom Посмотреть сообщение
' если подходящие ячейки найдены - скрываем или удаляем их
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
12.10.2013, 18:18 3
Вы комп заганяете. Проверьте это:
For Each ra In ActiveSheet.UsedRange
(ниже пропишите)
ra.select
stop

Очень подозреваю, что будет выделена ячейка. Может, стоит условие уточнить как:
For Each ra In ActiveSheet.UsedRange.Rows
И потом, если у Вас в перемежку обьединенные - нужно, думаю, это проверять и если попадает в выбор, тогда добавлять еще и соответствующую строку/строки, входящую в обьединение.
И это я бы написал по другому:
If HideOnly Then delra.ClearContents = True Else delra.ClearContents
как
If HideOnly Then delra.ClearContents Else delra.rows.delete
И здесь должно выкидывать ошику
On Error Resume Next: ПоискСтрокПоУсловию = delra.Areas.Count
1
0 / 0 / 0
Регистрация: 12.10.2013
Сообщений: 11
13.10.2013, 06:21  [ТС] 4
Признаюсь, я в vba не разбираюсь. Это был код для удаления строки, а мне необходимо удалять ячейки. Там где попадаются фразы про строку я просто напросто не заметил и не исправил.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
13.10.2013, 12:36 5
Тогда у Вас может возникнуть другая проблема. При удалении ячеек, соседние ячейки (или снизу, или справа) могут смещаться (если Delete). И все равно будет работать долго. Нужно, думаю, использовать Find, FindNext, или подключать Collection, или Dictionary.
1
13.10.2013, 12:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2013, 12:36
Помогаю со студенческими работами здесь

Проблема с выбором ключевых фраз под гугл
доброе время суток Есть сайт на английском языке, который потребовалось раскрутить. Но при...

Слова, усиливающие важность ключевых слов/фраз
Сегодня меня попросили составить список слов, усиливающих важность ключевых слов/фраз в тексте...

Подсчет фраз в массиве ячеек
Добрый день. Столкнулся с такой проблемой. Есть группа людей, есть некоторое кол-во параметров,...

Поиск ячеек, содержащих одну из заданных фраз
не получается никак формулу допилить. вот сама формула =ЕСЛИ(ВПР(ИЛИ("оплата по договору аренды...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru