以下是一个示例代码,可以根据指定单元格的内容和多个类别名称筛选并复制内容到指定工作表的指定行数以下:

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/lKrp 著作权归作者所有。请勿转载和采集!

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