VBA 筛选数据并复制到另一个工作表
这是一个有效的 VBA 子程序,用于筛选数据并将结果复制到另一个工作表。
该程序首先定义了源工作表、目标工作表、筛选区域和输出区域。然后,它使用 AutoFilter 方法对源工作表进行筛选,筛选条件来自指定的单元格。
接着,程序获取筛选结果的最后一行,并使用 Copy 方法将筛选结果复制到目标工作表的指定区域。最后,程序取消筛选。
代码示例:
Sub FilterAndCopy()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim rngSource As Range, rngDest As Range
Dim lastRow As Long
' 设置源工作表和筛选区域
Set wsSource = Worksheets("Sheet1")
Set rngSource = wsSource.Range("A1:AO22987")
' 设置目标工作表和输出区域
Set wsDest = Worksheets("Sheet3")
Set rngDest = wsDest.Range("A5:AO22987")
' 清除目标工作表原有内容
rngDest.ClearContents
' 筛选数据
rngSource.AutoFilter Field:=1, Criteria1:=Range("$D$2").Value, Operator:=xlOr, Criteria2:=Range("$D$2").Value
' 获取筛选结果的最后一行
lastRow = rngSource.SpecialCells(xlCellTypeVisible).Cells(rngSource.Columns.Count).Row
' 复制筛选结果到目标工作表
rngSource.Resize(lastRow - 1, rngSource.Columns.Count).Offset(1, 0).Copy rngDest
' 取消筛选
rngSource.AutoFilter
End Sub
该程序使用以下方法和属性:
- Worksheets: 获取工作表对象
- Range: 获取单元格区域对象
- AutoFilter: 对工作表进行筛选
- SpecialCells: 获取筛选结果的可见单元格
- Resize: 调整单元格区域的大小
- Offset: 移动单元格区域的位置
- Copy: 将单元格区域复制到另一个位置
- ClearContents: 清除单元格区域的内容
注意:
- 该程序假设筛选条件位于
$D$2单元格中。 - 该程序假设目标工作表已经存在。
- 该程序将筛选结果复制到目标工作表的
A5:AO22987区域。可以根据需要修改这些参数。
该程序可以帮助您快速筛选数据并将结果复制到另一个工作表,从而简化您的工作流程。
原文地址: https://www.cveoy.top/t/topic/lKqu 著作权归作者所有。请勿转载和采集!