'laoyao 2020.08.11
'合并组-----------(start)
'首先清除所有合并组 Cells.Select Selection.ClearOutline
'思路:'设定起始行,一般建议起始行作为需要处理数据的第二行,因为常规情况下,第一行多数是作为1级组;
通过循环来判断指定列内容是否为空,如果为空则直接往下,知道读取到某行指定列数据为非空时,进行处理;
'处理的方法是,得到该行行标,减1得到上一段落的结尾,将起始行到结尾行内容作为创建组操作,
'然后将起始行重新赋值为该行标+1,继续下一个循环;
'比如下面的就是从第2行开始,默认第1行作为1级组
startid = 2
For i = 2 To lineend 'lineend为要处理数据的最后一行。
If Cells(i, "a") <> "" Then
If startid = i Then '防止连续标题行合并为组
startid = i + 1
Else
endid = i - 1
Rows(startid & ":" & endid).Select
Selection.Rows.Group
With ActiveSheet.Outline
.AutomaticStyles = False
.SummaryRow = xlAbove
.SummaryColumn = xlRight
End With
startid = i + 1
End If
End If
Next i '合并组-----------(end)
'这里面可能还涉及到起始就连续行存在内容时候会出现bug的情况(尚未测试)
'最大行可以采用 lineend= Range("A65536").End(xlUp).Row (A列)