Excel VBA将类似数据与新的父行分组

Excel VBA将类似数据与新的父行分组,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有一个电子表格,列a中有唯一的数字,我想将其与显示的父行组合在一起。例如: 我希望它像这样显示,并在其唯一编号下面分组注释(在excel中为shift+alt+right) 折叠后,它将看起来像: 加号实际上不在单元格中,只是表示父单元格下面有子行。希望得到答案。提前非常感谢我认为您的问题更适合使用Excel过滤器而不是VBA。但是,如果您真的想使用VBA,下面的代码就是您所描述的,也许您可以使用它作为实现目标的起点 .select语句应全部删除。它们就在那里,这样你就可以通过动画gif

我有一个电子表格,列a中有唯一的数字,我想将其与显示的父行组合在一起。例如:

我希望它像这样显示,并在其唯一编号下面分组注释(在excel中为shift+alt+right)

折叠后,它将看起来像:


加号实际上不在单元格中,只是表示父单元格下面有子行。希望得到答案。提前非常感谢

我认为您的问题更适合使用Excel过滤器而不是VBA。但是,如果您真的想使用VBA,下面的代码就是您所描述的,也许您可以使用它作为实现目标的起点

.select语句应全部删除。它们就在那里,这样你就可以通过动画gif了解代码的工作原理。然后,在最后,在隐藏行周围单击鼠标右键以取消隐藏它们

选项显式
子组andhiderows()
调暗sh作为工作表,r作为范围
设置sh=ActiveSheet
'分组行
设置r=sh范围(“A1”)
而r“
sh.Rows(r.Row).插入Shift:=xlDown,CopyOrigin:=xlFormatFromLeftOrove
r、 挑选
r、 偏移量(-1,0)=左(r,5)
而左(r,5)=左(r.偏移量(1,0,5)
设置r=r.Offset(1,0)
r、 挑选
温德
设置r=r.Offset(1,0)
温德
“隐藏行
设置r=sh范围(“A1”)
而r“
r、 挑选
如果不是数字(r),则sh.Rows(r.Row).EntireRow.Hidden=True
设置r=r.Offset(1,0)
温德
端接头
Option Explicit
Sub groupAndHideRows()
Dim sh As Worksheet, r As Range
Set sh = ActiveSheet
'group rows
Set r = sh.Range("A1")
While r <> ""
    sh.Rows(r.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    r.Select
    r.Offset(-1, 0) = Left(r, 5)
    While Left(r, 5) = Left(r.Offset(1, 0), 5)
        Set r = r.Offset(1, 0)
        r.Select
    Wend
    Set r = r.Offset(1, 0)
Wend
'hide rows
Set r = sh.Range("A1")
While r <> ""
    r.Select
    If Not IsNumeric(r) Then sh.Rows(r.Row).EntireRow.Hidden = True
    Set r = r.Offset(1, 0)
Wend
End Sub