VBA 筛选多个条件并显示结果到其他工作表指定行数以下
这是一个比较复杂的问题,需要具体分析具体情况。以下是一种可能的解决方案:
- 在需要筛选的工作表中,选中需要筛选的区域(例如'A1:D10')。
- 打开'数据'选项卡,选择'筛选'。
- 在'筛选'对话框中,选择需要筛选的列,并输入筛选条件。例如,如果需要筛选'列A'中的'苹果'和'橙子',则需要选择'列A'并输入'苹果'和'橙子'两个条件。
- 点击'确定',筛选结果将显示在原表格中。
- 在需要显示结果的工作表中,选中需要显示结果的区域(例如'E1:H10')。
- 在 VBA 中,使用以下代码将筛选结果复制到指定的工作表和行数以下:
Sub FilterAndCopy()
Dim wsSource As Worksheet, wsDest As Worksheet
Dim rngSource As Range, rngDest As Range
Dim lastRow As Long
'设置源工作表和筛选区域
Set wsSource = Worksheets("原始数据")
Set rngSource = wsSource.Range("A1:D10")
'设置目标工作表和输出区域
Set wsDest = Worksheets("筛选结果")
Set rngDest = wsDest.Range("E1:H10")
'清除目标工作表原有内容
rngDest.ClearContents
'筛选数据
rngSource.AutoFilter Field:=1, Criteria1:="苹果", Operator:=xlOr, Criteria2:="橙子"
'获取筛选结果的最后一行
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
在上述代码中,我们首先定义了源工作表(wsSource)和筛选区域(rngSource),以及目标工作表(wsDest)和输出区域(rngDest)。然后,我们使用 AutoFilter 方法对筛选区域进行筛选,并获取筛选结果的最后一行(lastRow)。最后,我们使用 Copy 方法将筛选结果复制到目标工作表指定的区域,并取消筛选。
原文地址: https://www.cveoy.top/t/topic/lKpi 著作权归作者所有。请勿转载和采集!