如果 VBA 中的单元格不是数字,如何删除整行?我的代码删除了所有内容

How to delete entire row if a cell is not numeric in VBA? My code deletes everything

如果 A 列中的单元格不是数字,我想删除整行。网上有很多 material,但出于某种原因,我的代码删除了所有数字和非数字数据

有什么想法吗? 谢谢

Sub Test_If_Numeric()

    Dim LastRow As Long
    Dim i As Long

    LastRow = Cells(Rows.Count, "A").End(xlUp).Row

    For i = LastRow To 1 Step -1

        If Not IsNumeric(i) > 0 Then

            Rows(i).EntireRow.Delete

        End If
    Next

End Sub

也许我必须设置一个范围?也许我 As Long 还不够;任何想法如何做到这一点或解决方案? :)

您的 Not IsNumeric(i) > 0 语句将始终是 True 因为:

  1. iLastRow1 之间的数字,意味着 IsNumeric(i) 总是 returns True

  2. True > 0 always returns False(比较 non-converted 布尔值和真数总是 returns False

  3. Not False总是returnsTrue

为了删除所有 non-numeric 行,请尝试将 If Not IsNumeric(i) > 0 Then 替换为 If Not IsNumeric(Range("A" & i).Value) Then

虽然您可以遍历一个范围,但另一种方法是一次删除所有 non-numeric 行。特此在 A:A

列中提供一些示例数据的小示例

运行 使用 SpecialCells(xlCellTypeConstants, 2):

的代码
Sub DelNonNumeric()

Dim Rng As Range
With ThisWorkbook.Sheets("Sheet1") 'Change sheetname accordingly
    Set Rng = .Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeConstants, 2)
    Rng.Rows.EntireRow.Delete
End With

End Sub

导致: