【问题标题】:Excel - Dynamically Name the Top left Cell of a Table after filter'sExcel - 在过滤器之后动态命名表格的左上角单元格
【发布时间】:2021-10-02 13:54:57
【问题描述】:

当您过滤表时,行会合并,因此我要选择的位置会不断变化。我现在正在使用两个过滤器,所以我不确定如何动态命名每次都位于顶部的单元格。

【问题讨论】:

标签: excel vba dynamic datatable named-ranges


【解决方案1】:

这有点棘手 - 但正如 Scott 建议的那样,关键是使用 SpecialCells - 和 xlCellTypeVisible 常量

您还必须让 Excel 知道您的数据从哪个偏移量开始 - 并考虑过滤器标题(如果有)。

如果您修改常量以适合您的示例,此代码应该适合您。

最好在将来包含您自己的代码,这样我们就不会猜测了。

Public Sub Test()

    Const FilterHeaderRow As Integer = 1
    Const StartOfDataRows As Integer = 2
    Const DataOffset As Integer = StartOfDataRows - FilterHeaderRow
    
    Const CellFilteredLocation = 1
    
    Cells.SpecialCells(xlCellTypeVisible).Cells(StartOfDataRows, StartOfDataRows).Select
    Debug.Print Selection.Row ' ===> will only display second actual row
    
    ActiveSheet.AutoFilter.Range.Offset(DataOffset).SpecialCells(xlCellTypeVisible).Cells(CellFilteredLocation, CellFilteredLocation).Select
    Debug.Print Selection.Row ' ===> Actual first filtered row

End Sub

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2021-10-29
    • 2022-11-29
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2019-04-07
    相关资源
    最近更新 更多