Excel宏分组

时间:2015-08-21 16:35:02

标签: excel vba excel-vba

我不确定宏是否是解决此问题的最佳解决方案,但我希望对行进行分组并输入if语句以使其更容易一些。

我希望看到标记为A的所有内容都被分组到上面的B中。后表中的加号表示在Excel中添加的分组加。

我尝试将这些格式化为表格,但遇到了一些问题,我希望我分解文本的方式显示了A的主要思想卷入上面的B。

在表格之前:

B   88888   876  
A       8765  
A       8765  
A       8765  
B       
B   88888   8765  
A       5768  
A       8765  
B   88888   578  
A       578  
B       
B   88888   7658  
A       5768  
A       6578  
A       8765  
A       5768  
B   88888   5768  
A       5678  

表后:

+   B   88888   876  
    B       
+   B   88888   8765  
+   B   88888   578  
    B       
+   B   88888   7658  
+   B   88888   5768  

2 个答案:

答案 0 :(得分:0)

实际数据中是否每个组都用空行分隔?

我认为您已经更改了分组设置以将扩展放在首位?否则对于初学者: [数据] - >在分组功能区中,右下角有一个小框。单击[设置]。取消选中“详细信息下方的摘要行”框。

答案 1 :(得分:0)

这将使用" A ..."

对所有行进行分组
Option Explicit

Public Sub customGroups()
    Const FR As Long = 2    'first row (exclude header)
    Dim ws As Worksheet, ur As Range, grp As Range

    Set ws = ActiveSheet
    With ws
        With .UsedRange
            .Rows.ClearOutline
            Set ur = .Offset(FR - 1, 0).Resize(.Rows.Count - (FR - 1), .Columns.Count)
            .AutoFilter Field:=1, Criteria1:="=A*", Operator:=xlFilterValues
            For Each grp In .SpecialCells(xlCellTypeVisible).Areas
                If grp.Row > FR - 1 Then grp.Rows.Group
            Next
        End With
        .AutoFilterMode = False
        With .Outline
            .ShowLevels RowLevels:=1
            .SummaryRow = xlAbove
        End With
    End With
End Sub

enter image description here