grh1, не работает как? сообщает об ошибке или не удаляетс строки? Если первый вариант, какая ошибка? Если второй вариант у вас точно отрицательные и нулевые результаты в 27м столбце, как указано в макросе? попробуйте сделайте переменную, например XXX=Cells(i, 27) и через отладчик посмотреть какой результат получаете в переменную. PS у меня макрос отработал как <=0 так и <"0"
grh1, не работает как? сообщает об ошибке или не удаляетс строки? Если первый вариант, какая ошибка? Если второй вариант у вас точно отрицательные и нулевые результаты в 27м столбце, как указано в макросе? попробуйте сделайте переменную, например XXX=Cells(i, 27) и через отладчик посмотреть какой результат получаете в переменную. PS у меня макрос отработал как <=0 так и <"0"Sancho
1. макрос работал секунд 40-50; 2. Макрос удалил и сверху до таблицы все строки; 3. Макрос удалил в столбце "В" всю нумерацию.
Поэтому и написал, что не работает, вернее работает но через... Во вложенном файле-примере если нажать на выполнение макроса, то удаляться четко только строки с нулями. Но при этом ноль наверно выступает как текст, потому что в ковычках.
Sancho Строки удалились, но при этом:
1. макрос работал секунд 40-50; 2. Макрос удалил и сверху до таблицы все строки; 3. Макрос удалил в столбце "В" всю нумерацию.
Поэтому и написал, что не работает, вернее работает но через... Во вложенном файле-примере если нажать на выполнение макроса, то удаляться четко только строки с нулями. Но при этом ноль наверно выступает как текст, потому что в ковычках.grh1
Поэкспериментировав немного, выявил более-менее рабочий код, но почему-то удаляются не все строки с нулем и отрицательным значением. Что не так сделал, подправьте пожалуйста. Вот код: [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = 7 To Last If Cells(i, 27).Value <= 0 Then Rows(i).Delete End If Next i
End Sub
[/vba]
Поэкспериментировав немного, выявил более-менее рабочий код, но почему-то удаляются не все строки с нулем и отрицательным значением. Что не так сделал, подправьте пожалуйста. Вот код: [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = 7 To Last If Cells(i, 27).Value <= 0 Then Rows(i).Delete End If Next i
у вас изначально в строке For i = 500 To 1 Step -1, что означает что вам необходимо проверить и обработать макросом по первую строку, мы же не знаем что вам на самом деле нужно. если вам верхние строки нужны то соответсвенно поправьте код For i = 500 To 7 Step -1
всю нумерацию удалить он не мог, нарушил последовательность, удалив строки, да. А почему он не должен был этого сделать? у вас же нумерация не зависима от строки в файле, не основана на формулах. просто числа. если не так то пришлите ваш файл, посмотрю что не так.
у вас изначально в строке For i = 500 To 1 Step -1, что означает что вам необходимо проверить и обработать макросом по первую строку, мы же не знаем что вам на самом деле нужно. если вам верхние строки нужны то соответсвенно поправьте код For i = 500 To 7 Step -1
всю нумерацию удалить он не мог, нарушил последовательность, удалив строки, да. А почему он не должен был этого сделать? у вас же нумерация не зависима от строки в файле, не основана на формулах. просто числа. если не так то пришлите ваш файл, посмотрю что не так.Sancho
Поэкспериментировав немного, выявил более-менее рабочий код, но почему-то удаляются не все строки с нулем и отрицательным значением. Что не так сделал, подправьте пожалуйста.
первый подход от конца к началу был более правильный, потому что если идут подряд строки, выполняющие условия то таким циклом сторки будут пропускаться. Например подряд идут строки 10 и 11. На 10м шаге цикла макрос удалил десятую строку, а 11 я строка соответсвенно сдивнулась на 10ю строку. следующий шаг уже 11 строка. 10я соответсвенно вылетела из обработки. вам нужно либо поправить цикл как вы написали изначально, но с определителем последней строки [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = Last To 7 Step -1 If Cells(i, 27).Value <= 0 Then Rows(i).Delete End If Next i
End Sub
[/vba]
либо добавить возврат на предыдущий шаг [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = 7 To Last If Cells(i, 27).Value <= 0 Then Rows(i).Delete i=i-1 End If Next i
Поэкспериментировав немного, выявил более-менее рабочий код, но почему-то удаляются не все строки с нулем и отрицательным значением. Что не так сделал, подправьте пожалуйста.
первый подход от конца к началу был более правильный, потому что если идут подряд строки, выполняющие условия то таким циклом сторки будут пропускаться. Например подряд идут строки 10 и 11. На 10м шаге цикла макрос удалил десятую строку, а 11 я строка соответсвенно сдивнулась на 10ю строку. следующий шаг уже 11 строка. 10я соответсвенно вылетела из обработки. вам нужно либо поправить цикл как вы написали изначально, но с определителем последней строки [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = Last To 7 Step -1 If Cells(i, 27).Value <= 0 Then Rows(i).Delete End If Next i
End Sub
[/vba]
либо добавить возврат на предыдущий шаг [vba]
Код
Sub udalenie()
Last = Cells(Rows.Count, 2).End(xlUp).Row
For i = 7 To Last If Cells(i, 27).Value <= 0 Then Rows(i).Delete i=i-1 End If Next i
Ну и если можно строки кода как после удаления восстановить порядковый номер в столбце «В».
Слова СТРОКИ КОДА я понимаю макрос. И всё это связано с ОДНОЙ таблицей, в которой я попросил помощи. Из-за ОСНОВНОГО моего вопроса (удалить строки) сразу же в этой таблице возникает вопрос корректировки порядкового номера и это связано одной темой.
Я не пойму в чем проблема и за что я впал в такую немилось к Вам?
Serge_007, в теме я оговорил, что № пп - тоже вопрос и в самом первом посту т.е. в объявлении своем я и написал:
Ну и если можно строки кода как после удаления восстановить порядковый номер в столбце «В».
Слова СТРОКИ КОДА я понимаю макрос. И всё это связано с ОДНОЙ таблицей, в которой я попросил помощи. Из-за ОСНОВНОГО моего вопроса (удалить строки) сразу же в этой таблице возникает вопрос корректировки порядкового номера и это связано одной темой.
Я не пойму в чем проблема и за что я впал в такую немилось к Вам?grh1
Что "это" связано? А если Вам в этой же таблице понадобится добавить условного форматирования, результат запроса PQ, несколько формул, шрифт поправить и заливку столбцов сделать, то Вы так же в эту тему писать будуте потому что таблица ОДНА и та же для всех этих вопросов?
Из-за ОСНОВНОГО моего вопроса (удалить строки) сразу же в этой таблице возникает вопрос...
Посчитайте количество слов "вопрос" в этой Вашей фразе. Таких слов будет ДВА. Значит должно быть ДВЕ темы, о чем совершенно однозначно написано в правилах: "Один вопрос - одна тема" Что тут может быть непонятного?
Что "это" связано? А если Вам в этой же таблице понадобится добавить условного форматирования, результат запроса PQ, несколько формул, шрифт поправить и заливку столбцов сделать, то Вы так же в эту тему писать будуте потому что таблица ОДНА и та же для всех этих вопросов?
Из-за ОСНОВНОГО моего вопроса (удалить строки) сразу же в этой таблице возникает вопрос...
Посчитайте количество слов "вопрос" в этой Вашей фразе. Таких слов будет ДВА. Значит должно быть ДВЕ темы, о чем совершенно однозначно написано в правилах: "Один вопрос - одна тема" Что тут может быть непонятного?Serge_007