【发布时间】:2021-10-02 13:54:57
【问题描述】:
当您过滤表时,行会合并,因此我要选择的位置会不断变化。我现在正在使用两个过滤器,所以我不确定如何动态命名每次都位于顶部的单元格。
【问题讨论】:
标签: excel vba dynamic datatable named-ranges
当您过滤表时,行会合并,因此我要选择的位置会不断变化。我现在正在使用两个过滤器,所以我不确定如何动态命名每次都位于顶部的单元格。
【问题讨论】:
标签: excel vba dynamic datatable named-ranges
这有点棘手 - 但正如 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
【讨论】: