0

我正在尝试使用自动过滤器删除列中包含特定值的所有行。由于某种原因,它没有按预期工作,只删除了一些具有指定值的行,我决心找出原因

我的代码很简单:

Function GetRowRange(sheet, column, value) As Range
'check for a valid section column
sheet.AutoFilterMode = False
sheet.UsedRange.AutoFilter Field:=column, Criteria1:=value
Set GetRowRange = sheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
sheet.AutoFilterMode = False
End Function

With GetRowRange(importsheet, importsheet.UsedRange.Find("stato_4").column, "0")
    .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Delete
End With

更新 没有意义。我尝试将删除功能更改为:

For Each Row In GetRowRange(importsheet, importsheet.UsedRange.Find("stato_4").column, "0").Offset(1, 0).Rows
    Row.EntireRow.Delete
    iront = iront + 1
Next
MsgBox iront

它会识别出该范围内有 42 行(iront = 42),但它们都没有被删除

4

2 回答 2

1

我认为如果您的行数少于 8192 行(Excel 2010 之前),您可以使用特殊单元格删除它们吗?

添加一个公式列,如果该行包含您要测试的值,则会引发错误。

试试这个:

' 现在,此公式将在列与条件匹配的每一行中放置一个 #N/A。

    Range("C1:C" & Range("A1").End(xlDown).Row).FormulaR1C1 = "=IF(C[-2]=criteria,NA(),"""")"

'然后使用带有错误代码 xlErrors 的 SpecialCells 返回包含要删除的行的范围。

    Range("C1:C" & Range("A1").end(xldown).row).SpecialCells(xlCellTypeFormulas,xlErrors).entirerow.delete

Oxgrid HTH上还有更多内容

菲利普

于 2013-03-05T16:22:57.420 回答
1

不确定UsedRange是否可靠。尝试使用类似的东西Range("A1").CurrentRegion

于 2013-03-05T16:50:28.847 回答