在excel中dynamic地冻结窗格

我有一个Excel格式的数据,格式如下:

Title Summary A A info 1 A info 2 A info 3 Summary B B info 1 B info 2 Summary C 

所以现在我只有“标题”作为Excel中的冻结窗格。 它工作正常,所有,但有大量的数据,所以当你在工作表的中间,很难知道你是在summary A还是summary B

有谁知道如何dynamic冻结窗格? 即最初的titleSummary A将被冻结。 然后当用户向下滚动直到下一个部分,则TitleSummary B将被冻结等等。

您可以尝试一下(在工作表代码模块中)。 每次select更改时,都会在第一列中检查“摘要*”的内容:如果工作表尚未冻结到该行,则会进行调整。

一个难点是向上滚动,你必须点击顶部窗格中的一个行…

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static lastFreeze As Long Dim c As Range, r As Long, sel As Range Set sel = Selection 'get the first cell on the selected row, then ' go up until find a content like "Summary*" Set c = Target.Parent.Cells(Target.Cells(1).Row, 1) Do While (Not c.Value Like "Summary*") And c.Row > 1 Set c = c.Offset(-1, 0) Loop 'need to switch freeze location? If c.Row > 1 And c.Row <> lastFreeze Then ActiveWindow.FreezePanes = False 'prevent re-triggering event Application.EnableEvents = False Application.GoTo c.Offset(-1, 0), True c.Offset(1, 0).Select ActiveWindow.FreezePanes = True sel.Select Application.EnableEvents = True lastFreeze = c.Row End If End Sub 

这可能有点晚了,但我正在寻找这样的解决scheme,我想出了一个更好的方法,因为解冻和重新冻结可能会相当激动。 而是尝试分组: http : //office.microsoft.com/en-us/excel-help/outline-group-data-in-a-worksheet-HA010095247.aspx