Private Sub Test()
Application.ScreenUpdating = False
Dim rw&
For rw = 100 To 1 Step -1
If Cells(rw, 1) = "-" And Cells(rw, 2) = "-" Then Rows(rw).Delete
Next
Application.ScreenUpdating = True
End Sub
Как в excel удалить нужную строку через VBA
Подскажите пожалуйста, задача следующая:
Необходимо пройтись по всем рядам таблицы.
Если в колонке А стоит "-" и в колонке В стоит "-", то данную строку необходимо удалить.
Можно ли реализовать данную задачу через макросы?
Спасибо.
Будет примерно так:
Код:
Rows("1:1").Select //выделяем первую строку
Selection.Delete Shift:=xlUp //удаляем со сдвигом вверх
Selection.Delete Shift:=xlUp //удаляем со сдвигом вверх
А как правильно организовать перебор всех элементов, и, собственно, если не трудно то условие скажите как задать?
Код:
Sub Macros()
Dim rw As Long
For rw = 1 To 100
If Cells(rw, "A").Value = "-" And Cells(rw, "B").Value = "-" Then
Rows(rw & ":" & rw).Delete Shift:=xlUp
End If
Next rw
End Sub
Dim rw As Long
For rw = 1 To 100
If Cells(rw, "A").Value = "-" And Cells(rw, "B").Value = "-" Then
Rows(rw & ":" & rw).Delete Shift:=xlUp
End If
Next rw
End Sub
Работает, но почему-то за один проход не справляется. Причем строк меньше 100. 10 строк удаляет за 4 прохода. Что может останавливать скрипт?
Код:
Все верно, при переборе снизу вверх работает корректно. Спасибо всем!
Код:
Private Sub Test2()
Dim rw&, ws As Worksheet
Set ws = ActiveSheet
With Application
.ScreenUpdating = False
For rw = 100 To 1 Step -1
If .CountIf(ws.Cells(rw, "A").Resize(, 2), "-") = 2 Then ws.Rows(rw).Delete
Next
.ScreenUpdating = True
End With
End Sub
Dim rw&, ws As Worksheet
Set ws = ActiveSheet
With Application
.ScreenUpdating = False
For rw = 100 To 1 Step -1
If .CountIf(ws.Cells(rw, "A").Resize(, 2), "-") = 2 Then ws.Rows(rw).Delete
Next
.ScreenUpdating = True
End With
End Sub