如何自动删除Excel中包含“Grand Total”的所有行?

时间:2012-11-29 15:39:41

标签: excel vba excel-vba

在我名为“报告”的活动表格中,我有2栏I& F.

它包含重复的单元格,其中包含“Grand Total”

如果它自动包含Grand Total,我想删除整行。

VBA代码会很好。

enter image description here

3 个答案:

答案 0 :(得分:3)

使用以下VBA代码,您可以快速删除具有特定单元格值的行,请按以下步骤操作:

  1. 选择要删除特定行的范围。

  2. 单击开发人员> Visual Basic,将显示一个新的Microsoft Visual Basic for Applications窗口,单击插入>模块,并将以下代码输入模块:

    根据单元格值删除整行的VBA代码(即Grand Total):

    Sub Delete_Rows()
        Dim rng As Range, cell As Range, del As Range
        Set rng = Intersect(Range("A1:D22"), ActiveSheet.UsedRange)
        For Each cell In rng
        If (cell.Value) = "Grand Total" _
        Then
        If del Is Nothing Then
        Set del = cell
        Else: Set del = Union(del, cell)
        End If
        End If
        Next cell
        On Error Resume Next
        del.EntireRow.Delete
        End Sub
    
  3. 然后单击“播放/运行”按钮运行代码,并删除具有特定值的行。

  4. (注意:如果在Excel中看不到“开发人员”选项卡请执行以下步骤:1)单击“Office”按钮,然后单击“Excel选项”。 2)在“热门”类别中,在“使用Excel的顶部选项”下,选中“功能区”复选框中的“显示开发人员”选项卡,然后单击“确定”。)

答案 1 :(得分:2)

使用AutoFilter非常有效。这也可以在没有VBA(即手动)

的情况下完成

主要

Sub Main()
Dim ws As Worksheet
Dim rng1 As Range
Dim StrIn As String
Dim rng2  As Range
Set ws = Sheets("Sheet1")
Application.ScreenUpdating = False
Set rng1 = ws.Range("F:F,I:I")
StrIn = "Grand Total"
For Each rng2 In rng1.Columns
Call FilterCull(rng2, StrIn)
Next
Application.ScreenUpdating = True
End Sub

删除子

Sub FilterCull(ByVal rng2, ByVal StrIn)
With rng2
    .Parent.AutoFilterMode = False
    .AutoFilter Field:=1, Criteria1:=StrIn
   .EntireRow.Delete
    .Parent.AutoFilterMode = False
    End With
End Sub

答案 2 :(得分:1)