我想知道是否有比我正在使用的代码更快的方法来完成这个任务。我从录音机中得到了使用xlUp的代码。
rCnt = Cells(Rows.Count, "B").End(xlUp).Row
ActiveSheet.Range("$B$1:$J" & rCnt).AutoFilter Field:=5, _
Criteria1:=Application.Transpose(arrCodes), Operator:=xlFilterValues
Rows("2:" & rCnt).Delete Shift:=xlUp
实际上,如果有什么方法可以翻转过滤器,我根本不需要删除,因为这是我复制的临时表。然而,我所有的研究都没有找到方法。
Criteria1:=Application.Transpose(<>arrCodes)
arrCodes有太多的元素要在过滤器中列出。而且arrCodes中没有的东西太多了,无法用它来制作数组。谢谢。
发布于 2015-05-28 19:08:32
如果您只想使用Excel而不使用公式或VBA,可以执行以下简单步骤来获得“反向”筛选器。如果需要,可以将其移植到VBA:
如果列已经有一些背景色,这将不能很好地工作。如果是这样的话,您可以添加一个新的列并给它加上颜色。如果这是在VBA中,您可以自动化这些步骤。这是有限度的,但如果适用的话,这是快速而简单的。
发布于 2015-05-28 16:42:06
我曾经成功地建造了然后删除了一个范围。您可以将范围与Union()
合并。我附加了一些示例代码,它不是很好,但它展示了基本的概念。此示例删除第2行至第11行A列中带有奇数的行。
Public Sub DeleteRows()
Dim deleteThis As Range
For i = 2 To 11
If Sheet1.Cells(i, 1).Value Mod 2 = 1 Then
If deleteThis Is Nothing Then
Set deleteThis = Sheet1.Rows(i)
Else
Set deleteThis = Union(deleteThis, Sheet1.Rows(i))
End If
End If
Next i
deleteThis.Delete xlShiftUp
End Sub
https://stackoverflow.com/questions/30512007
复制相似问题