Как задать фильтр на удаление строк в столбце I в диапазоне от 1-й строки до строки со значением "Итого на работу:" В столбце I находятся разные формулы, но бывает, что некоторые строки пустые или формула выдает ноль. Нужно задать фильтр, чтобы удалить лишние строки со значение "0" и ""
Как задать фильтр на удаление строк в столбце I в диапазоне от 1-й строки до строки со значением "Итого на работу:" В столбце I находятся разные формулы, но бывает, что некоторые строки пустые или формула выдает ноль. Нужно задать фильтр, чтобы удалить лишние строки со значение "0" и ""den45444
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Cells(i, 1) <> "" And InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 Then Rows(i).Delete Next i End Sub
[/vba]
den45444, например так: [vba]
Код
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Cells(i, 1) <> "" And InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 Then Rows(i).Delete Next i End Sub
Manyasha, Благодарю за ответ. В данном диапазоне не удаляет пустые строки. А также, удаляет всю информацию, которая находится ниже данного диапазона. Т.е., в целом, смысл выглядит так: 1. Задаем диапазон от 6 строки до строки со значением "Итого на работу:" 2. Ищем в столбце "I" нули и пустые ячейки. 3. Удаляем все эти строки. 4. При этом вся нижняя часть должна сместиться.
Manyasha, Благодарю за ответ. В данном диапазоне не удаляет пустые строки. А также, удаляет всю информацию, которая находится ниже данного диапазона. Т.е., в целом, смысл выглядит так: 1. Задаем диапазон от 6 строки до строки со значением "Итого на работу:" 2. Ищем в столбце "I" нули и пустые ячейки. 3. Удаляем все эти строки. 4. При этом вся нижняя часть должна сместиться.den45444
Вы никак не хотите задуматься над критериями "хорошести". Например, почему строку 10 удалять нужно, а строку 20 нет? Чем они отличаются? Автономно - только цветом. В составе таблицы - окружением. Исходя из условий "хорошести" определяется алгоритм удаления. При этом следует учитывать, насколько важна "скорострельность". (По цвету или...)
Вы никак не хотите задуматься над критериями "хорошести". Например, почему строку 10 удалять нужно, а строку 20 нет? Чем они отличаются? Автономно - только цветом. В составе таблицы - окружением. Исходя из условий "хорошести" определяется алгоритм удаления. При этом следует учитывать, насколько важна "скорострельность". (По цвету или...)RAN
RAN, Мне не важна заливка и т.п. Мне важно, чтобы в указанном диапазоне удалялись обсалютно все строки, у которых в столбце "I" ноль или пустая ячейка.
RAN, Мне не важна заливка и т.п. Мне важно, чтобы в указанном диапазоне удалялись обсалютно все строки, у которых в столбце "I" ноль или пустая ячейка.den45444
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Val(Cells(i, "I")) = 0 Then Rows(i).Delete Next i End Sub
[/vba]
И где проблема? [vba]
Код
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Val(Cells(i, "I")) = 0 Then Rows(i).Delete Next i End Sub
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Cells(i, 1) <> "" And InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 Then Rows(i).Delete Next i End Sub
[/vba] Как можно этот код поправить, чтобы он удалял еще пустые строки и чтобы не удалял нижние строки (за строкой "Итого на работу"?
RAN, [vba]
Код
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If Cells(i, 1) <> "" And InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 Then Rows(i).Delete Next i End Sub
[/vba] Как можно этот код поправить, чтобы он удалял еще пустые строки и чтобы не удалял нижние строки (за строкой "Итого на работу"?den45444
RAN, Ваш код тоже неверно работает. Если добавить в диапазон пустую строку и строка заполнена не полностью, то процедура игнорирует эти строки.
RAN, Ваш код тоже неверно работает. Если добавить в диапазон пустую строку и строка заполнена не полностью, то процедура игнорирует эти строки.den45444
den45444, пробуйте так (ориентировка на цвет): [vba]
Код
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 And Cells(i, 1).Interior.ColorIndex = xlNone Then Rows(i).Delete Next i End Sub
[/vba]
den45444, пробуйте так (ориентировка на цвет): [vba]
Код
Sub del_rows() Application.ScreenUpdating = False Dim i& For i = Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1 If InStr(Cells(i, 1), "Итого") = 0 And Cells(i, "I") = 0 And Cells(i, 1).Interior.ColorIndex = xlNone Then Rows(i).Delete Next i End Sub