小编Ela*_*mer的帖子

根据列中的条件删除行

我在网上和这里搜索过但找不到符合条例草案和工作的任何东西.我有一些代码可以工作,但因为它删除行时范围的长度发生变化,它没有捕获所有要删除的行,所以我最终运行了几次,这不是很好......所以我'我正在尝试按此线程推荐的AutoFilter方法.

我有一个包含多个列的电子表格,其中一个是"成本".我需要浏览'cost'列(有时可以是第9列,有时是10,因此下面是'find'位)并删除成本为0的任何行...

下面是我到目前为止编写的代码,任何帮助都会非常非常感激!!!!

- 编辑3:已经进行了一些更改代码...新代码如下.

Sub RemoveRows()
    Dim cell As Range
    Dim lastRow As Long
    Dim lastColumn As Integer
    Dim criteraColumn As Integer
    Dim criteriaRange As Range

    lastRow = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
    lastColumn = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column

    Rows(1).EntireRow.Select
    criteriaColumn = Selection.Find(What:="Cost", After:=ActiveCell, LookIn:= _
                        xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
                        xlNext, MatchCase:=False, SearchFormat:=False).Column
    Set criteriaRange = Range("A1", Cells(lastRow, lastColumn))

    criteriaRange.AutoFilter Field:=criteriaColumn, Criteria1:="£0.00"
    AutoFilter.Range.Delete
    ActiveSheet.AutoFilterMode = False
End Sub
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它将过滤器应用于正确的范围和正确的列.然后我收到错误消息:"运行时错误'424':对象需要"适用于该AutoFilter.Range.Delete行.当我按下"结束"或"调试"并查看电子表格时,过滤器已应用于正确的列并检查了正确的选项(£0.00),但没有返回结果(我知道我需要做在将来出现这种情况时会有一些错误处理,但是现在这个过滤器应该返回至少10行.如果我在电子表格中的过滤器设置上手动按"确定"(不更改它们中的任何一个!),我的10个结果会正确显示,所以我不确定为什么当我以编程方式执行此操作时它们没有出现?

如果需要,很高兴提供电子表格示例,这真让我感到困惑!

电子表格可以在这里找到

excel vba excel-2007 excel-vba

1
推荐指数
1
解决办法
6978
查看次数

标签 统计

excel ×1

excel-2007 ×1

excel-vba ×1

vba ×1