Удалить строку + перейти вверх на основе частичного совпадения текста в столбце - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу, чтобы макрос удалил любую строку, которая содержит general в столбце А, и переместился вверх (чтобы удалить пустую строку).

У меня естьпытался это сделать, но безуспешно:

Sub format()
If Worksheets("Sheet1").Range("A1:A20").Value = "general" Then
Selection.Delete Shift:=xlToUp 
End If
End Sub

Sample Screenshot

1 Ответ

0 голосов
/ 19 февраля 2019

Вот пример использования автофильтра, который не требует цикла.

Sub x()

Dim rData As Range

Application.ScreenUpdating = False

Range("A1").EntireRow.Insert
Range("A1:E1").Value = Array(1, 2, 3, 4,5) 'amend to how many columns you have

With ActiveSheet
    .AutoFilterMode = False
    .Range("A1").AutoFilter field:=1, Criteria1:="*General*"
    With .AutoFilter.Range
        On Error Resume Next
        Set rData = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
        If Not rData Is Nothing Then
            Application.DisplayAlerts = False
            rData.Delete
            Application.DisplayAlerts = True
        End If
    End With
    .AutoFilterMode = False
    .Rows(1).Delete
End With

Application.ScreenUpdating = True

End Sub
...