You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不改变自动筛选状态下获取工作表真实最后一行?

在不关闭AutoFilter的情况下获取Excel工作表真实最后一行

以下几种方法可以在保留AutoFilter状态的前提下,获取工作表未筛选时的真实最后一行:

方法1:利用UsedRange属性

UsedRange会返回工作表中所有曾被使用过的单元格区域,不受筛选状态影响。通过计算该区域的起始行和行数,就能得到最后一行:

Dim lastRow As Long
' 先刷新UsedRange,避免包含已清空的旧数据区域
ActiveSheet.UsedRange
lastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

方法2:定位xlCellTypeLastCell

直接定位工作表中最后一个有内容(或曾有内容)的单元格,该方法忽略筛选隐藏的行:

Dim lastRow As Long
lastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

注意:如果之前删除过大量内容但未保存工作表,该单元格的位置可能不会自动更新,保存后即可恢复准确。

方法3:带参数的Find方法

普通Find会受筛选影响,但通过指定LookIn:=xlFormulas并设置搜索方向为从后往前,可以遍历所有单元格(包括筛选隐藏的):

Dim lastRow As Long
With ActiveSheet
    lastRow = .Cells.Find(What:="*", _
                          After:=.Cells(1, 1), _
                          LookIn:=xlFormulas, _
                          LookAt:=xlPart, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row
End With

这个方法适合需要精准定位当前有内容的最后一行(不包含已清空的旧使用区域)。

内容的提问来源于stack exchange,提问作者OTstand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:48:11