在我名为报告的活动表中,我有 2 列 I 和 F。
它具有包含文本"Grand Total"的重复单元格。
如果它自动包含总计,我想删除整行。
VBA代码会很好。
使用下面的 VBA 代码,可以快速删除具有特定单元格值的行,请按以下步骤操作:
选择要删除特定行的范围。
点击 Developer>Visual Basic,会弹出一个新的 Microsoft Visual Basic for applications 窗口,点击 Insert > Module,在 Module 中输入以下代码:
根据单元格值(即总计)删除整行的 VBA 代码:
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
然后单击“播放/运行”按钮运行代码,具有一定值的行已被删除。
(注意:如果您在 Excel 中看不到“开发人员”选项卡,请执行以下步骤: 1)单击“Office”按钮,然后单击“Excel 选项”。2) 在“流行”类别中,在“使用 Excel 的热门选项”下,选中“功能区”复选框中的“显示开发人员”选项卡,然后单击“确定”。)
使用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
这应该可以帮助您入门。
另见类似问题: Delete a row in Excel VBA