这是一个有效的 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 区域。可以根据需要修改这些参数。

该程序可以帮助您快速筛选数据并将结果复制到另一个工作表,从而简化您的工作流程。

VBA 筛选数据并复制到另一个工作表

原文地址: https://www.cveoy.top/t/topic/lKqu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录