Excel VBA如何定义排除隐藏行的Last Row以适配不同报表场景
调整LR2的计算逻辑,从已使用区域末尾向上查找第一个可见行,兼容有无隐藏行两种场景的完整代码如下:
Dim LR2 As Long Dim i As Long ' 从已使用区域最后一行向上遍历,取第一个非隐藏行作为有效行末尾 For i = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row To 1 Step -1 If Not Rows(i).Hidden Then LR2 = i Exit For End If Next i ActiveSheet.Range("A6:A" & LR2).Copy ActiveSheet.Range("B6:B" & LR2) Application.CutCopyMode = False ' 移除冗余的Select操作,执行效率更高 ActiveSheet.Range("B6:B" & LR2).Replace What:="-", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
如果你的报表有效数据默认都在A列填充,也可以用更简洁的LR2计算逻辑,直接取A列最后一个有内容的行,自动忽略下方无内容的隐藏行:
' 替换上方的循环逻辑即可,其余代码不变 LR2 = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
内容的提问来源于stack exchange,提问作者Zain Lakdawala
相关产品推荐
相关产品推荐

