Нужна Ваша помощь с написанием макроса. Нужно сделать обработку прайса ( в нем примерно 15 000 - 20 000 строк):
1. Удалить с 1 - 9 строки 2. Удалить столбцы C, D, F, G, H, I, K, L, M, N, P 3. Удалить строки по условию, например: начиная со строки "Компьютеры для игроков" по "Компьютеры Acer", далее с "Рекламная продукция для дилеров" по "Воздуходувки Makita" и тд. (таких условий примерно 6), в завершении удалить все, что ниже строки с наименованием "Уцененный товар". 4. Удалить символы < и >
Есть макрос, но он удаляет только по наименованию:
[vba]
Код
Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "Наименование ценности" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' если в строке найден искомый текст If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next ' если подходящие строки найдены - удаляем их If Not delra Is Nothing Then delra.EntireRow.Delete End Sub
[/vba]
Исходник (файл с наименованием start) и пример (файл с наименованием finish) прилагаю. Надеюсь и рассчитываю на Вашу помощь в решении такой сложной задачи.
Всем доброго времени суток!
Нужна Ваша помощь с написанием макроса. Нужно сделать обработку прайса ( в нем примерно 15 000 - 20 000 строк):
1. Удалить с 1 - 9 строки 2. Удалить столбцы C, D, F, G, H, I, K, L, M, N, P 3. Удалить строки по условию, например: начиная со строки "Компьютеры для игроков" по "Компьютеры Acer", далее с "Рекламная продукция для дилеров" по "Воздуходувки Makita" и тд. (таких условий примерно 6), в завершении удалить все, что ниже строки с наименованием "Уцененный товар". 4. Удалить символы < и >
Есть макрос, но он удаляет только по наименованию:
[vba]
Код
Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "Наименование ценности" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' если в строке найден искомый текст If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next ' если подходящие строки найдены - удаляем их If Not delra Is Nothing Then delra.EntireRow.Delete End Sub
[/vba]
Исходник (файл с наименованием start) и пример (файл с наименованием finish) прилагаю. Надеюсь и рассчитываю на Вашу помощь в решении такой сложной задачи.force
3. Удалить строки по условию, например: начиная со строки "Компьютеры для игроков" по "Компьютеры Acer", далее с "Рекламная продукция для дилеров" по "Воздуходувки Makita" и тд. (таких условий примерно 6), в завершении удалить все, что ниже строки с наименованием "Уцененный товар".
Все остальное просто прицеп (что б не мучиться все собирать в одну кучу). Если у кого-то есть возможность помочь с п. 3, буду очень признателен.
3. Удалить строки по условию, например: начиная со строки "Компьютеры для игроков" по "Компьютеры Acer", далее с "Рекламная продукция для дилеров" по "Воздуходувки Makita" и тд. (таких условий примерно 6), в завершении удалить все, что ниже строки с наименованием "Уцененный товар".
Все остальное просто прицеп (что б не мучиться все собирать в одну кучу). Если у кого-то есть возможность помочь с п. 3, буду очень признателен. force
Сообщение отредактировал force - Понедельник, 25.08.2014, 00:45
Во вложении макрос почти развлекательного характера =) Так как из Вашей инструкции не очень понятно, какие категории надо удалить, а какие оставить - код работает следующим образом. После первого нажатия на кнопку создаётся список категорий и предлагается выбрать, кого оставляем. Для этого заменяем нули на единицы напротив наименований. После этого жмём кнопу ещё раз.
force, здравствуйте.
Во вложении макрос почти развлекательного характера =) Так как из Вашей инструкции не очень понятно, какие категории надо удалить, а какие оставить - код работает следующим образом. После первого нажатия на кнопку создаётся список категорий и предлагается выбрать, кого оставляем. Для этого заменяем нули на единицы напротив наименований. После этого жмём кнопу ещё раз.Rioran
Так как из Вашей инструкции не очень понятно, какие категории надо удалить, а какие оставить
Все понятно, на самом деле наименований категорий примерно 2 000, мне нужно жестко прописать в алгоритме макроса, с какой и по какую категорию удалять строки (вы покажите пример, а я пропишу ), и таких "жестких" условий примерно 10 - 15 (не помню).
Я просто привел пример на нескольких категориях, потому что оригиналы в архиве весят от 14 мб.
Макрос сначала находит первое условие - "Компьютеры для игроков" и все удаляет до "Компьютеры Acer", затем ищет втрое условие - "Рекламная продукция для дилеров" и все удаляет до "Воздуходувки Makita" и тд. пока не встретим условие - "Уцененный товар", после которого все остальные строки удаляем.
Так как из Вашей инструкции не очень понятно, какие категории надо удалить, а какие оставить
Все понятно, на самом деле наименований категорий примерно 2 000, мне нужно жестко прописать в алгоритме макроса, с какой и по какую категорию удалять строки (вы покажите пример, а я пропишу ), и таких "жестких" условий примерно 10 - 15 (не помню).
Я просто привел пример на нескольких категориях, потому что оригиналы в архиве весят от 14 мб.
Макрос сначала находит первое условие - "Компьютеры для игроков" и все удаляет до "Компьютеры Acer", затем ищет втрое условие - "Рекламная продукция для дилеров" и все удаляет до "Воздуходувки Makita" и тд. пока не встретим условие - "Уцененный товар", после которого все остальные строки удаляем.