vba 根据列表的多个类别名称筛选复制内容到指定工作表的指定行数以下,筛选条件为指定单元格的内容
以下是一个示例代码,可以根据指定单元格的内容和多个类别名称筛选并复制内容到指定工作表的指定行数以下:
Sub FilterAndCopy() Dim wsSource As Worksheet, wsDest As Worksheet Dim rngSource As Range, rngDest As Range, rngFilter As Range Dim lastRow As Long, i As Long, j As Long Dim filterValues() As Variant, filterColIndex As Long Dim destRow As Long, maxRows As Long
'设置源工作表和目标工作表
Set wsSource = Worksheets("数据源")
Set wsDest = Worksheets("筛选结果")
'设置源数据范围和筛选条件
Set rngSource = wsSource.Range("A1:E100")
Set rngFilter = wsSource.Range("G1")
filterValues = Array("类别1", "类别2", "类别3")
filterColIndex = 3 '类别名称所在列的索引
'设置目标数据范围和起始行号
Set rngDest = wsDest.Range("A2:E100")
destRow = 2
'设置最大行数,超过该行数则停止复制
maxRows = 50
'根据筛选条件循环源数据范围
lastRow = rngSource.Rows.Count
For i = 2 To lastRow
If rngSource(i, filterColIndex).Value <> rngFilter.Value Then
Continue For '不符合筛选条件,跳过
End If
For j = 0 To UBound(filterValues)
If rngSource(i, filterColIndex).Value = filterValues(j) Then
'符合筛选条件,复制到目标数据范围
rngSource.Rows(i).Copy rngDest.Rows(destRow)
destRow = destRow + 1
If destRow > maxRows Then
Exit Sub '超过最大行数,停止复制
End If
Exit For '退出当前循环,继续下一行
End If
Next j
Next i
End Sub
这个示例代码中,源数据范围为A1:E100,其中第3列为类别名称。筛选条件为G1单元格的内容,根据指定的类别名称数组进行筛选。符合筛选条件的行会被复制到目标工作表的A2:E100范围内,起始行号为2,最大行数为50。如果超过最大行数,则停止复制。
原文地址: https://www.cveoy.top/t/topic/xb9 著作权归作者所有。请勿转载和采集!