我试图创建一个只显示数据表的前20行和后20行的宏,并隐藏第20行和第n-19行之间的所有行。
顶行不是静态行 - 它可以被标识为具有值" Company"的行之后的下一行。在B栏中。
最后一行也不是静态的,因为数据的总行数会随着时间的推移而变化。
不幸的是,我对vba并不熟悉,而且这种逻辑很难实现。是否有人能够帮助如何让宏来做这个?
非常感谢任何和所有帮助!
答案 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
这是相对简单的,如果不是一点点冗长(它可能会缩短)。但是,对于学习,这应该有很多帮助。请注意你