Excel宏可隐藏变量行号之间的行

问题描述 投票:0回答:2

我正在尝试创建一个宏,它只显示数据表的前20行和后20行,并隐藏第20行和第n-19行之间的所有行。

顶行不是静态行 - 可以将其标识为B列中具有值“Company”的行之后的下一行。

最后一行也不是静态的,因为总数据行数会随时间变化。

不幸的是,我不熟悉vba,这种逻辑很难实现。是否有人能够帮助如何获得宏来做到这一点?

任何和所有的帮助非常感谢!

excel vba excel-vba
2个回答
0
投票

这应该工作:

Sub hide_in_between()
Dim ws      As Worksheet
Dim startCell As Range, endCell As Range

Set ws = Worksheets("Sheet1")    ' CHANGE as necessary

With ws
    Set startCell = .Range("B:B").Find(what:="Company").Offset(1, 0)
    Set endCell = .Range("B" & .Rows.Count).End(xlUp)

    Dim topGroup As Range, bottomGroup As Range

    Set topGroup = .Range(startCell, startCell.Offset(19, 0))
    Set bottomGroup = .Range(endCell.Offset(-19, 0), endCell)

    Dim hiddenGroup As Range
    Set hiddenGroup = .Range(topGroup.Rows(topGroup.Rows.Count), bottomGroup.Rows(1).Offset(-1, 0))

    hiddenGroup.EntireRow.Hidden = True
End With

End Sub

这是相对简单的,如果不是一点点冗长(它可能会缩短)。但是,对于学习,这应该有很多帮助。请注意你


1
投票

首先隐藏它们然后取消隐藏顶部和底部:

Sub HideAndSeek()

    n1 = Columns("B").Find("Company").Row + 1
    n2 = Cells(Rows.Count, "B").End(xlUp).Row

    Rows(n1 & ":" & n2).EntireRow.Hidden = True

    For i = 0 To 19
        Cells(i + n1, "B").EntireRow.Hidden = False
        Cells(n2 - i, "B").EntireRow.Hidden = False
    Next i
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.