'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列)