Excel-对每个条目具有多行的列表进行排序

Excel-对每个条目具有多行的列表进行排序,excel,excel-2007,vba,Excel,Excel 2007,Vba,如果列表不是每个条目一行,有没有办法在excel中对列表进行排序。条目可以是2+行 未分类: A B C 1 Entry3 2 Data1 Data2 3 Data3 Data4 4 Entry1 5 Data5 Data6 6 Entry2 7 Data7 Data8 分类: A B

如果列表不是每个条目一行,有没有办法在excel中对列表进行排序。条目可以是2+行

未分类:

      A       B       C      

1   Entry3  
2            Data1  Data2  
3            Data3  Data4   
4   Entry1  
5            Data5  Data6  
6   Entry2 
7            Data7  Data8
分类:

      A       B       C      

1   Entry1  
2            Data5  Data6    
3   Entry2  
4            Data7  Data8  
5   Entry3 
6            Data1  Data2
7            Data3  Data4

你需要一个魔术

对于质押,首先用标题条目的副本填写每个条目下方的区域。基本上,A1:A2应该有Entry1,A3:A4应该有Entry2,A5:A7应该有Entry3

下面的子例程执行上述操作

Sub Pledge()
    Dim LRow As Long: LRow = Range("B" & Rows.Count).End(xlUp).Row
    Dim CurrentName As String
    CurrentName = ""
    For Iter = 1 To LRow
        If Range("A" & Iter).Value <> "" Then
            If Range("A" & Iter).Value <> CurrentName Then
                CurrentName = Range("A" & Iter).Value
            End If
        Else
            Range("A" & Iter).Value = CurrentName
        End If
    Next Iter
End Sub
截图:

但它永远不会结束,对吗?你还没拍手,直到它回来。这就是威望


试着录制一个宏,然后对C列、B列、a列排序,然后查看vba代码。谢谢,这正是我要找的@用户3071825:不客气!谢谢你的接受,祝你好运
Sub Turn()
    Range("A:C").Sort Range("A1"), xlAscending
End Sub
Sub Prestige()
    Dim LRow As Long: LRow = Range("B" & Rows.Count).End(xlUp).Row
    Dim CurrentName As String
    CurrentName = ""
    For Iter = 1 To LRow
        If Range("A" & Iter).Value <> "" Then
            If Range("A" & Iter).Value = CurrentName Then
                Range("A" & Iter).Value = ""
            Else
                CurrentName = Range("A" & Iter).Value
            End If
        End If
    Next Iter
End Sub
Sub GrandIllusion()
    Pledge
    Turn
    Prestige
End Sub