在Excel中动态选择当前列中的筛选行数

时间:2018-02-28 06:45:57

标签: excel excel-vba vba

Excel中是否有方法(可能是VBA)根据当前列选择一组已过滤的行?当前的工作流程通常要求我们一次选择25或100个过滤行的活动列。

我在研究期间遇到的大多数宏似乎都是

  1. 选择表格或列中的所有数据
  2. 涉及预定义的列。
  3. 我最初认为这将是一个向前发展的宏观发展但却有困难。我在研究过程中发现的代码向下移动了一定数量的行,但在计数时似乎没有考虑过滤行。

    Sub MoveOneCellDownAFilteredList()
        ActiveCell.Select
        Range(Selection, Selection.Offset(2, 0)).Select
        Do Until ActiveCell.EntireRow.Hidden = False
            ActiveCell.Offset(2, 0).Select
        Loop
    End Sub
    

    感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

以下只是示例(没有准备好使用复制粘贴解决方案),但它们应该为您提供正确的解决方案以解决您的问题:

要仅选择特定范围的可见单元格,您可以使用Range.SpecialCells method

  • 以下仅选择超出范围的可见单元格" A1:A200"

    Range("A1:A200").SpecialCells(xlCellTypeVisible).Select
    
  • 例如选择活动列的所有可见整行,您可以使用类似

    的内容
    ActiveCell.EntireColumn.SpecialCells(xlCellTypeVisible).EntireRow.Select
    
  • 或者只选择可见且具有常量值的行,您可以将它们组合起来,如

    ActiveCell.EntireColumn.SpecialCells(xlCellTypeConstants).SpecialCells(xlCellTypeVisible).EntireRow.Select
    

阅读documentation以获取SpecialCells的更多选项。

请注意,如果您想在选择旁边执行任何进一步操作,我建议您根本不要使用.Select。我建议您阅读How to avoid using Select in Excel VBA以获得良好的做法以及更好,更快更可靠的代码。