vba代码实现筛选数据,按指定列,删除指定值以外的行
时间: 2024-03-04 13:48:17 浏览: 271
可以使用VBA中的AutoFilter功能实现筛选数据,然后再删除指定值以外的行。
以下是一个示例代码:
```vb
Sub FilterAndDeleteRows()
Dim ws As Worksheet
Dim filterCol As Range
Dim filterVal As Variant
Dim lastRow As Long
Set ws = ActiveSheet
Set filterCol = ws.Range("A:A") '指定筛选列
filterVal = "指定值" '指定筛选值
lastRow = ws.Cells(ws.Rows.Count, filterCol.Column).End(xlUp).Row '获取最后一行
'使用AutoFilter筛选数据
filterCol.AutoFilter Field:=1, Criteria1:="<> " & filterVal
'删除指定值以外的行
For i = lastRow To 2 Step -1 '从最后一行开始往上循环
If Not ws.Rows(i).Hidden Then '如果这一行没有被筛选隐藏
ws.Rows(i).Delete '删除这一行
End If
Next i
'取消AutoFilter
filterCol.AutoFilter Field:=1
End Sub
```
其中,需要修改的部分包括:
- `filterCol`:指定需要筛选的列,这里的代码指定的是A列;
- `filterVal`:指定筛选的值,这里的代码指定的是"指定值";
- 如果需要修改筛选的列和筛选的值,可以修改这两个变量的值即可。
另外,这里的代码是删除指定值以外的行,如果需要删除指定值的行,可以将代码中的"<>"改为"="即可。
阅读全文