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

时间:2018-01-04 22:40:46

标签: excel vba excel-vba

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

顶行不是静态行 - 它可以被标识为具有值" Company"的行之后的下一行。在B栏中。

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

不幸的是,我对vba并不熟悉,而且这种逻辑很难实现。是否有人能够帮助如何让宏来做这个?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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