【问题标题】:Excel vba Selecting first visible row after filterExcel vba在过滤后选择第一个可见行
【发布时间】:2015-07-08 08:32:45
【问题描述】:

我正在尝试过滤特定值“COUNTRY1”的列表,然后选择标题下方的前 10 行(从第 2 行 A 列到第 11 行 L 列)或 ("A2:L11")

但是由于过滤器,第一个可见行不是(“A2”)而是例如(“A15”)。

我想做的是指向第一个可见行,复制前 10 行,但只复制到 L 列。而不是整行。
搜索了一些在线参考资料,但它们非常复杂,并且包含更多没有帮助的详细信息。

任何帮助将不胜感激。

代码如下:

wbk5.Sheets("Consolidated").Activate

With wbk5.Sheets("Consolidated")
    .AutoFilterMode = False
    .Range("A1:D1").AutoFilter
    .Range("A1:D1").AutoFilter Field:=1, Criteria1:="COUNTRY1"
    .Range("A2:L11").Copy
End With

wbk5.Sheets("TOP 10-C").Activate
wbk5.Sheets("TOP 10-C").Range("A6").PasteSpecial Paste:=xlPasteValues

【问题讨论】:

    标签: excel vba filter


    【解决方案1】:
    With wbk5.Sheets("Consolidated")
        .AutoFilterMode = False
        .Range("A1:D1").AutoFilter
        .Range("A1:D1").AutoFilter Field:=1, Criteria1:="COUNTRY1"
        Dim Cols As Range, Rows1 As Range, Counter As Long, RowNum As Long
        RowNum = 10 'quota of ten
        'edit that might help
        Counter = 0
        '/edit
        Set Cols = .Columns("A:L") 'columns from where we need data
        For i = 2 To .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious) 'from the second row to the last
            If .Cells(i, 1).Visible And Counter < RowNum Then 'if it's visible and we haven't filled our quota
                Counter = Counter + 1 'we're closer to our quota
                Set Rows1 = .Range("2:" & i) ' we can include this row
            End If
        Next i
        Intersect(Cols, Rows1).SpecialCells(xlCellTypeVisible).Copy 'from selected columns, from selected rows, only visible cells
    End With
    

    【讨论】:

    • 感谢您的回复。我试过了,在“if”条件下出现错误。对象不支持此属性或方法。我尝试删除 IF 条件,它工作正常,但它正在复制所有可见单元格,而不仅仅是前 10 个。
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多