VBA筛选A列中包含B列值,并将结果保存在C列
时间: 2024-09-28 13:10:14 浏览: 56
两表相同出结果自动到第三表
在VBA (Visual Basic for Applications) 中,你可以使用 `AutoFilter` 方法和 `AdvancedFilter` 方法来筛选Excel工作表中的数据。假设你是想在A列中查找并筛选出包含B列特定值的数据,然后将筛选结果保存在C列,可以按照以下步骤编写代码:
1. 首先,在VBA编辑器中,选择你的工作表(例如 "Sheet1"),然后插入一个新的模块(按 `Alt + F11` 打开,选择 "插入" -> "模块")。
2. 在模块窗口中,粘贴以下代码:
```vba
Sub FilterData()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1") ' 更改为你需要操作的工作表名称
Dim rngA As Range, rngB As Range, rngC As Range
Set rngA = ws.Range("A:A") ' A列范围
Set rngB = ws.Range("B:B") ' B列范围
Set rngC = ws.Range("C:C") ' C列范围 (新添加的筛选结果)
' 筛选A列,如果包含B列中的值
ws.Range("A1").AutoFilter Field:=1, Criteria1:="*" & rngB.Value & "*" ' 更改为B列实际的单元格引用
' 使用 AdvancedFilter 将满足条件的行复制到C列
With ws.AutoFilterMode
rngC.Clear
.Off
Application.CopySpecial Destination:=rngC, Operation:=xlCopy, SkipBlanks:=False
.On
End With
' 清除A列的筛选状态
rngA AutoFilter
End Sub
```
3. 运行此宏 (`F5` 或者点击工具栏的运行按钮),A列就会根据B列的值进行筛选,并将结果保存在C列。
阅读全文