【问题标题】:Select rows which have a numeric value in the first cell (Column A)选择在第一个单元格中具有数值的行(A 列)
【发布时间】:2015-07-22 22:56:41
【问题描述】:

我正在使用 Excel VBA 尝试在我的电子表格上选择一系列行,这些行位于最后一行下方,A 列中有一个数值。第 40 行是我需要从中选择的地方,但这个位置会改变.如何基于非数值执行选择。目前我正在选择行的范围并使用以下方法删除它们

Rows("40:40").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp

【问题讨论】:

    标签: excel vba


    【解决方案1】:
    Dim LastRow as Integer
    
    LastRow = ActiveSheet.UsedRange.Rows.Count    
    
    For row = 2 To LastRow
        If Not IsNumeric(Cells(row, 1)) Then
            row = row+1
            Rows(row).Select
            Range(Selection, Selection.End(xlDown)).Select
            Application.CutCopyMode = False
            Selection.Delete Shift:=xlUp
        End If
    Next row
    

    【讨论】:

    • 我有点想不通,因此做了很多修改,但这个版本应该可以工作。虽然我还没有尝试过,所以不能保证 ;)
    • 我对您的答案做了一些小修改,以获得更有用的信息。
    • 谢谢大家。目前有以下行的问题 --> Rows(row:row).Select
    • 我认为这是因为 row here --> For row = 2 To LastRow --- 将变为大写。
    • @AMorton1989 行不会变成大写。我从您拥有的代码中复制了这个,并将 40 替换为 row。试试 Rows(row).Select,也许效果更好。
    【解决方案2】:

    最终结果。

        Dim LastRow As Integer
        LastRow = ActiveSheet.UsedRange.Rows.Count
    
    'In this instance I am starting from row 6.
    For Row = 6 To LastRow
        If Not IsNumeric(Cells(row, 1)) Then
    
            Rows(Row & ":" & Row).Select
            Range(Selection, Selection.End(xlDown)).Select
            Application.CutCopyMode = False
            Selection.Delete Shift:=xlUp
        End If
    Next Row
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 2010-11-28
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多