我正在尝试创建一个宏,它只显示数据表的前20行和后20行,并隐藏第20行和第n-19行之间的所有行。
顶行不是静态行 - 可以将其标识为B列中具有值“Company”的行之后的下一行。
最后一行也不是静态的,因为总数据行数会随时间变化。
不幸的是,我不熟悉vba,这种逻辑很难实现。是否有人能够帮助如何获得宏来做到这一点?
任何和所有的帮助非常感谢!
这应该工作:
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
这是相对简单的,如果不是一点点冗长(它可能会缩短)。但是,对于学习,这应该有很多帮助。请注意你
首先隐藏它们然后取消隐藏顶部和底部:
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