如何删除“ A”列中有数字的行?

问题描述 投票:1回答:1

在“ A”列中,我试图删除以数字开头的行。因此,例如,在发布的图像中,我希望宏删除第3和11行。

 Sub RemoveNumbersFromColumnA()
  Dim X As Long, R As Long, Data As Variant
  Data = Range("A3", Cells(Rows.Count, "A").End(xlUp))
  For R = 3 To UBound(Data)
    For X = 3 To Len(Data(R, 3))
      If Mid(Data(R, 3), X, 3) Like "[0-9]" Then

      Rows("3:" & cell.Row - 1).Delete
Next
      Range("A3").Resize(UBound(Data)) = Data
Else if
End Sub
excel vba for-loop numeric delete-row
1个回答
0
投票

首先从工作缓慢的东西开始:

Sub RemoveNumbersFromColumnA()

    Dim i As Long
    Dim wks As Worksheet
    Set wks = Worksheets(1)

    For i = 10 To 1 Step -1
        If IsNumeric(Left(wks.Cells(i, "A"), 1)) Then
            Debug.Print wks.Cells(i, "A"); " deleting..."
            wks.Cells(i, "A").Delete
        End If
    Next i

End Sub

想法是向后循环,并检查单元格内容的最左边部分是否为数字。如果是数字,则在立即窗口中打印信息并将其删除。这就是您得到的,例如按F8。分步操作:

enter image description here

然后,您可以继续,将要删除的行保存到单个范围,最后只删除一次该范围。像这样一个:

Sub RemoveNumbersFromColumnA()

    Dim i As Long
    Dim myCell As Range
    Dim rowsToDelete As Range

    For i = 1 To 10
        Set myCell = Worksheets(1).Cells(i, "A")
        If IsNumeric(Left(myCell, 1)) Then
            Debug.Print myCell; " adding..."
            If rowsToDelete Is Nothing Then
                Set rowsToDelete = myCell.EntireRow
            Else
                Set rowsToDelete = Union(rowsToDelete, myCell.EntireRow)
            End If
        End If
    Next i

    If Not rowsToDelete Is Nothing Then
        rowsToDelete.Delete
    End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.