Страницы: 1
RSS
Макрос: фильтрация и удаление строк
 
Добрый день
Прошу помочь с решением следующей задачи (в приложенном файле):
Дан массив данных с трекингом почтовых отправлений
Необходимо очистить его от строчек, в которых при расчете выпадают ошибка (столбцы Z-Q, 'error')

Конкретная проблема в данный момент заключается в автоматизации очистки листа с входными данными
Сейчас это делается вручную:
1) фильтрация столбцов Z-Q на первоначальном массиве (пусть это будет лист А) с удалением значения error
2) копирование очищенного массива, вставка его на другой лист (B)
3) отмена фильтров, удаление массива с первоначального листа (А)
4) перенос скопированного "очищенного" массива обратно с листа В на лист А

Я уверен, что это можно автоматизировать
Помогите написать следующие макросы:
А) При нажатии на кнопку автоматически происходит удаление всех строк, в которых есть значение 'error' в диапазоне Z-Q, при этом оставшийся массив остается без пробелов (пустых строк между заполненными)
Б)...(удалено)
 
Цитата
Конкретная проблема в данный момент заключается в автоматизации очистки листа
Значит, оставляем только  А (вопросы разные и в одной теме им тесно).
 
Плюх
Плюх
 
Цитата
столбцов Z-Q
Если правильно понял, с листа необходимо удалить все строки где после вычисления написано "error" находящиеся в столбцах Q-Z. В вашем примере в столбце АА вставьте формулу
Код
=СЧЁТЕСЛИ(Q2:Z2;"error")
фильтром выбрать ">0" - выделить отображенные данные и удалить строку. Эту процедуру можно записать макрорекордером и повесить этот макрос на кнопку. Но возможно. я все, не правильно понял. В примере только что есть, какой должен быть конечный результат нет.
Изменено: gling - 20.10.2014 20:05:52
 
Спасибо
А как сделать, чтобы не оставалось пробелов между строками? Чтобы оставшийся массив был цельным, без пустых строк на месте удаленных
 
можно простым макросом перебрать эти данные и удалить строки

Код
Sub deleting()
Dim lr As Integer
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lr
        For j = 17 To 26
1:          If Cells(i, j).Value = "error" Then
                Rows(i).EntireRow.Delete
                GoTo 1
            End If
        Next
    Next
End Sub
тогда пустых строк не будет, их удалит.
 
ASKer_mk, Ваш макрос вообще ничего не удалит - Вы ищете последнюю строку по первому столбцу, а он в файле пустой))
И в таких случаях цикл по строкам лучше делать снизу вверх.
 
Цитата
без пустых строк на месте удаленных
написано же
Цитата
удалить строку
не Delet, а Ctrl+минус(-) -- строку-- ОК, или на закладке Главная--Ячейки --Удалить(раскрывающийся список) --Удалить ячейки с листа (оффис 2010). В результате пустых строк остаться не должно.
 
Юрий М,Извините, не посмотрел файл, предложил просто как вариант.
Страницы: 1
Наверх