Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除VBA中的行_Vba_Excel - Fatal编程技术网

删除VBA中的行

删除VBA中的行,vba,excel,Vba,Excel,我正在Excel 2013中编写VBA代码。 我需要过滤一张工作表并保留某些行(假设过滤列B并保留该列中包含“Apple”的行),但是,我想删除除带有“Apple”的行之外的所有行 所以我的问题是-在VBA代码中有没有一种聪明的方法可以做到这一点,如果有,那么如何做到? 或者我应该过滤除“苹果”之外的所有内容,将剩余的行复制粘贴到另一张纸上,然后在新的纸上工作 谢谢大家! 没有自动过滤器: Sub RowKiller2() Dim N As Long, rDel As Range, cl

我正在Excel 2013中编写VBA代码。 我需要过滤一张工作表并保留某些行(假设过滤列B并保留该列中包含“Apple”的行),但是,我想删除除带有“Apple”的行之外的所有行

所以我的问题是-在VBA代码中有没有一种聪明的方法可以做到这一点,如果有,那么如何做到? 或者我应该过滤除“苹果”之外的所有内容,将剩余的行复制粘贴到另一张纸上,然后在新的纸上工作

谢谢大家!

没有自动过滤器:

Sub RowKiller2()
    Dim N As Long, rDel As Range, cl As String
    Dim kv As Variant, r As Range, rBig As Range
    cl = "B"
    kv = "Apple"
    N = Cells(Rows.Count, cl).End(xlUp).Row
    Set rBig = Range(cl & 1 & ":" & cl & N)
    For Each r In rBig
    If r.Value <> kv Then
        If rDel Is Nothing Then
            Set rDel = r
        Else
            Set rDel = Union(rDel, r)
        End If
    End If
    Next r

    If Not rDel Is Nothing Then
        rDel.EntireRow.Delete
    End If

End Sub
Sub-RowKiller2()
尺寸N等于长度,rDel等于范围,cl等于字符串
尺寸kv作为变型,r作为量程,rBig作为量程
cl=“B”
kv=“苹果”
N=单元格(Rows.Count,cl).结束(xlUp).行
设置rBig=范围(cl&1&“:”&cl&N)
对于rBig中的每个r
如果r.值为kv,则
如果rDel什么都不是
设置rDel=r
其他的
集合rDel=并集(rDel,r)
如果结束
如果结束
下一个r
如果不是,那么rDel什么都不是
rDel.EntireRow.Delete
如果结束
端接头

在这里查看我的答案:将尝试-谢谢:)