用VBA对单元格进行分组

用VBA对单元格进行分组,vba,excel,Vba,Excel,我想使用VBA在excel中进行一些分组 我的“标准”列是“A”,这是一个明显冗余的数字列表,应该分组,以便用户更好地理解excel工作表 我已将列“A”命名为“Vertrag\uu\Nr” 我的代码 Sub Test() Dim i As Integer, LastRow As Integer LastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To LastRow If Not Left(Cells(i, 1), 2)

我想使用VBA在excel中进行一些分组

我的“标准”列是“A”,这是一个明显冗余的数字列表,应该分组,以便用户更好地理解excel工作表

我已将列“A”命名为“Vertrag\uu\Nr”

我的代码

Sub Test()
Dim i As Integer, LastRow As Integer

LastRow = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To LastRow

    If Not Left(Cells(i, 1), 2) = "Vertrag__Nr." Then
        Cells(i, 2).EntireRow.Group
    End If

Next i
End Sub
我的问题是,我的代码没有按条目“Vertrag\u Nr.”(A列)分组,而是将整个列分组为一个大组


由于分组用于摘要,组之间必须有一个摘要位置,它们不能是连续的,请尝试以下代码:

Sub Test()
Dim i As Integer, j As Integer, LastRow As Integer
Dim currVal As Variant
    With ActiveSheet
        LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        i = 2

        While i <= LastRow
            currVal = .Cells(i, 1).Value
            j = 0
            Do
                j = j + 1
            Loop Until .Cells(i + j, 1).Value <> currVal
            If j > 1 Then
                .Rows(i + j).Insert
                .Cells(i + j, 1).Value = currVal
                Range(.Cells(i, 1), .Cells(i + j - 1, 1)).EntireRow.Group
            End If
            i = i + j
        Wend
    End With
End Sub
子测试()
尺寸i为整数,j为整数,最后一行为整数
Dim currVal作为变体
使用ActiveSheet
LastRow=.Cells(Rows.Count,1).End(xlUp).Row
i=2
而我呢
.行(i+j).插入
.单元格(i+j,1).值=当前值
范围(.Cells(i,1),.Cells(i+j-1,1)).EntireRow.Group
如果结束
i=i+j
温德
以
端接头

据我所见,您的代码将成为一个大的组。你能提供你的工作表的快照吗?@zac我已经更新了我的问题,所以,在你提供的例子中,哪些行应该分组?@MichałTurczyn所有这些行都根据列a
左(单元格(i,1),2)=“Vertrag_uuuunr”。
将始终是
False
,因为
是“Vertrag_uuunr”
有12个字符……太好了,非常感谢您的时间和努力!:)$