VBA删除上次代码产生的数据
时间: 2023-05-22 09:06:27 浏览: 82
这个问题是编程类的问题,我可以回答。在 VBA 中,要删除上次运行代码产生的数据,可以使用 ClearContents 或 Clear 方法清除单元格的内容,或者使用 Delete 方法删除整行或整列数据。具体操作取决于你想要删除的数据类型和位置。
相关问题
last,lst1,last3j是变量,如何用VBA代码实现:筛选B列的值不等于last,lst1,last3j的值的资料并删除,取消筛选,剩余资料是筛选B列的值等于last或,lst1,或,last3j的值的资料
在VBA宏中,你可以使用`AdvancedFilter`函数来实现这个需求。以下是一个示例代码段,它首先创建一个临时区域保存满足条件的数据,然后筛选出不包含特定值的数据,并删除这部分内容,最后取消筛选并保留包含`last`, `lst1`, 或 `last3j` 的数据:
```vba
Sub FilterAndDelete()
Dim ws As Worksheet '假设你在工作表ws上操作
Set ws = ThisWorkbook.Worksheets("Sheet1") '替换为你实际的工作表名称
'假设last, lst1, last3j已经存储在相应单元格中
Dim last As Variant, lst1 As Variant, last3j As Variant
last = ws.Range("B" & Rows.Count).End(xlUp).Offset(-1, 0).Value '获取B列最后一个非空白单元格的值
lst1 = ws.Range("B2").Value '这里假设lst1在B2
last3j = ws.Range("B3").Value '类似地,这里是B3
'创建临时过滤范围
Dim rngTemp As Range
Set rngTemp = ws.Range(ws.Cells(1, 2), ws.Cells(Rows.Count, 2).End(xlUp)) '<假设B列为列2
rngTemp AdvancedFilter Action:=xlFilterInPlace, Criteria1:="<>" & last, _
CopyToRange:=Nothing, Unique:=False '第一次筛选,排除last
'添加其他值到Criteria1数组里,用于一次处理
Dim criteria(1 To 3) As Variant
criteria(1) = "<>" & lst1
criteria(2) = "<>" & last3j
'合并所有筛选条件
Dim fullCriteria As String
fullCriteria = Join(criteria, " AND <>")
'再次应用筛选,这次排除上次筛选后的结果
rngTemp.SpecialCells(xlCellTypeVisible).AdvancedFilter Action:=xlFilterInPlace, _
Criteria1:=fullCriteria, CopyToRange:=Nothing, Unique:=False
'取消筛选
ws.ShowAllData
'现在,筛选剩下的就是B列值等于last, lst1, 或 last3j的资料
End Sub
阅读全文