【问题标题】:Excel Macro Loop DeleteExcel 宏循环删除
【发布时间】:2016-02-28 14:18:05
【问题描述】:

我似乎无法让我的循环工作:

For Each c In ActiveWorkbook.Sheets("appointments").Range("N1:N1000000")
     If c = "Test" Then c.EntireRow.Delete
Next

我想要的是删除列 N 中单元格值为 Test 的行。

【问题讨论】:

  • 更改为常规 for 循环并向后循环。这个网站和其他网站上有很多例子。
  • 对不起,我是新手。你能帮我编辑一下吗?
  • HERE 它提供了三种很好的方法。

标签: excel vba loops macros


【解决方案1】:
Dim i As Long

For i = 1000000 To 1 Step -1
    If Cells(i, 14).Value = "Test" Then
        Rows(i).Delete
    End If
Next i

以上内容将满足您的要求,但我建议您这样做,因为我怀疑您是否拥有价值一百万行的数据:

Dim i As Long
Dim LastRow As Long

LastRow = ActiveCell.SpecialCells(xlCellTypeLastCell).Row

For i = LastRow To 1 Step -1
    If Cells(i, 14).Value = "Test" Then
        Rows(i).Delete
    End If
Next i

【讨论】:

    【解决方案2】:

    这是我的答案,而且效果很快:

    ActiveWorkbook.Sheets("appointments").Range("N1:N1000000").AutoFilter 1, "=Test"
         ActiveWorkbook.Sheets("appointments").Range("N2:N1000000").SpecialCells(xlCellTypeVisible).EntireRow.Delete
         ActiveWorkbook.Sheets("appointments").AutoFilterMode = False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多