Excel 删除包含特定数据的两列行
我有一个excel文件,其中包含一张包含以下数据的表格:Excel 删除包含特定数据的两列行,excel,vba,macros,Excel,Vba,Macros,我有一个excel文件,其中包含一张包含以下数据的表格: A | B | C | D ________________________________________________ 321 2016/12/01 0 0 123 2016/12/03 23 0 1321 2016/12/05 12
A | B | C | D
________________________________________________
321 2016/12/01 0 0
123 2016/12/03 23 0
1321 2016/12/05 12 1
2315 2015/12/03 0 0
23154 2015/12/03 0 0
如果C
和
D中的值为0,我确实希望删除所有行。我怎样才能做到这一点呢?简短的谷歌搜索给了我多种方法:
简短的谷歌搜索给了我多种方法:
对值为0的列C和D应用过滤器,并删除显示的行 对值为0的列C和D应用过滤器,并删除显示的行 考虑:
Sub RowKiller213()
Dim i As Long, N As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
For i = N To 1 Step -1
If Cells(i, "C").Value = 0 And Cells(i, "D").Value = 0 Then
Cells(i, "C").EntireRow.Delete
End If
Next i
End Sub
注意:
- 循环自下而上运行
Sub RowKiller213()
Dim i As Long, N As Long
N = Cells(Rows.Count, "A").End(xlUp).Row
For i = N To 1 Step -1
If Cells(i, "C").Value = 0 And Cells(i, "D").Value = 0 Then
Cells(i, "C").EntireRow.Delete
End If
Next i
End Sub
注意:
- 循环自下而上运行
Sub Main()
With Worksheets("mySheetName")
With .Range("D1", .Cells(.Rows.Count, 1).End(xlUp))
.AutoFilter field:=3, Criteria1:=0
.AutoFilter field:=4, Criteria1:=0
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub
确保将第一行作为标题1,然后使用此选项:
Sub Main()
With Worksheets("mySheetName")
With .Range("D1", .Cells(.Rows.Count, 1).End(xlUp))
.AutoFilter field:=3, Criteria1:=0
.AutoFilter field:=4, Criteria1:=0
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False
End With
End Sub
是的,可能是重复的。但在我的例子中,有两列可以在删除行的情况下。在你的例子中,只需在代码中添加C列和D列,而不是只考虑一列(这就是你在评论中所说的吗?)那么,这对我来说是一个简单的例子吗?假设条件中有4列?如果我不得不猜测(我不知道VBA),您会在答案中添加
Do While
,以包括两列。可能类似于:thiswook.ActiveSheet.Range(“C1”).CurrentRegion.Rows.Count&&thiswook.ActiveSheet.Range(“D1”).CurrentRegion.Rows.Count
是的,可能是重复的。但在我的例子中,有两列可以在删除行的情况下。在你的例子中,只需在代码中添加C列和D列,而不是只考虑一列(这就是你在评论中所说的吗?)那么,这对我来说是一个简单的例子吗?假设条件中有4列?如果我不得不猜测(我不知道VBA),您会在答案中添加Do While
,以包括两列。可能类似于:ThisWorkbook.ActiveSheet.Range(“C1”).CurrentRegion.Rows.Count&&ThisWorkbook.ActiveSheet.Range(“D1”).CurrentRegion.Rows.Count
在您的链接中,它没有给出一个将2、3或10列的值与链接中的0进行比较的示例,它没有给出一个例子来考虑将2列、3列或10列的值与响应的0列进行比较。“未找到对象引用”感谢您的回复。“未找到对象引用”带有-不允许作为过程在外部。您必须将该代码包装在子WhateverName()
结束子块中!见编辑code@FlorinM.,你通过了吗?使用-作为过程不允许外出。你必须将该代码包装在子WhateverName()
结束子块中!见编辑code@FlorinM.,你熬过了吗?