Страницы: 1
RSS
удаление строк по условию
 
Написала самостоятельно макрос удаляющий строки по двум условиям (начиная с 6 строки: второй и пятый столбец если равно 0 то удалить строку полностью). Но не работает, в чем ошиблась? буду благодарна

Код
[LEFT]Sub mmm() 
 Set Sht = Application.ActiveWorkbook.ActiveSheet 
 Dim i As Integer 
 i = 6 
For i = 6 To 1400 
If Cells(i, 2).Value = 0 And Cells(i, 5).Value = 0 Then 
Call Rows(i).Delete 

Else 
i = i + 1 
End If 
Next 
End Sub[/LEFT]
Изменено: tolkyna - 26.06.2014 13:23:50
 
:?:  

Код
Sub mmm()
Dim i As Integer
For i = 6 To 1400
    If Cells(i, 2).Value = 0 And Cells(i, 5).Value = 0 Then Rows(i).Delete
Next
End Sub
 
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja пишет:
Sub mmm() Dim i As Integer For i = 6 To 1400 If Cells(i, 2).Value = 0 And Cells(i, 5).Value = 0 Then Rows(i).Delete Next End Sub
Sanja, выдает ошибку run time error 13, typе mismatch
и выделяет строку  If Cells(i, 2).Value = 0 And Cells(i, 5).Value = 0 Then Rows(i).Delete
 
tolkyna, код следует оформлять тегом. Исправляйте.
 
Sanja,так будет работать, но неправильно. Нужно циклом идти снизу вверх.
 
ничего не работает(
Код
Sub mmm()
Dim i As Integer
Dim iLastRow As Integer
iLastRow = Cells(Rows.Count, 5).End(xlUp).Row

For i = iLastRow To 6 Step -1
    If Cells(i, 2).Value = 0 And Cells(i, 5).Value = 0 Then
    Rows(i).Delete
    End If
    Next i
   
End Sub
Изменено: tolkyna - 26.06.2014 14:27:38
 
Попробуйте адаптировать готовый макрос:
http://excelvba.ru/code/ConditionalRowsDeleting

в вашем случае, макрос будет выглядеть так:
Код
Sub УдалениеСтрокПоУсловию()
    Dim delra As Range, i&
    Application.ScreenUpdating = False        ' отключаем обновление экрана

    For i = 6 To 1400
        If Val(Cells(i, 2).Value) = 0 And Val(Cells(i, 5).Value) = 0 Then
            ' добавляем строку в диапазон для удаления
            If delra Is Nothing Then Set delra = Cells(i, 2) Else Set delra = Union(delra, Cells(i, 2))
        End If
    Next
    
    ' если подходящие строки найдены - удаляем их
    If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub 
 
Взял Sub mmm(), сделал для него файл - всё прекрасно работает.
Только конечно в общем случае integer там не годится - на любом листе строк всегда больше. Занятых может быть меньше - но всего всегда больше!
Изменено: Hugo - 26.06.2014 13:39:01
 
Игорь, я видела в форуме данный готовый макрос. Однако  решила что макрос относится к поиску текста. Но ваш макрос почему то не работает почему то. Может быть потому что 5 столбец короче чем 2-й?
 
Цитата
tolkyna пишет:
Может быть потому что 5 столбец короче чем 2-й?
А может быть нужно проверять не =0, а ="" (пусто)?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, в таком случае удалять при условии либо пусто либо 0,  
 
Sub mmm() и так уже удаляет при пусто или 0.
Страницы: 1
Читают тему
Наверх