Основная идея зацикливания строк и столбцов состоит в том, что вам нужно два for
цикла.
Первый цикл по строкам, второй по столбцам.
Я недостаточно использую VBA, чтобы помнить, как удаляются строки, но если вы зациклились в обратном направлении (как в приведенном ниже коде), вы никогда не должны забывать, какая строка удаляется.
Следующий код должен работать для ваших целей (хотя он требует рефакторинга!):
Редактировать: спасибо barrowc за исправление.
Sub remove_some_rows()
Dim i As Long
Dim j As Long
Dim current_cell As Object
Dim beg_row As Long
Dim end_row As Long
Dim beg_col As Long
Dim end_col As Long
beg_row = 1
end_row = 10
beg_col = 1
end_col = 7
Dim empty_col_counter As Integer
For i = end_row To beg_row Step -1
empty_col_counter = 0
For j = end_col To beg_col Step -1
Set current_cell = ThisWorkbook.ActiveSheet.Cells(i, j)
If j > 4 And current_cell.Value = "" Then
empty_col_counter = empty_col_counter + 1
End If
Next j
If empty_col_counter = 3 Then
current_cell.EntireRow.Select
Selection.Delete
End If
Next i
End Sub