Excel VBA - 将数据分组并插入标题

时间:2016-04-07 16:27:45

标签: excel vba excel-vba

我希望那里有人可以帮我这个!

我有一部分工作表(例如A10:D100),用户在其中输入数据。

结束单元格将始终包含组名称/标签(例如“工具”,或“黑桃”或任何),并且宏需要按字母顺序对这些组中的所有数据进行排序,然后在组上方插入一行并添加标题。标题将等于下面行的结尾单元格中的组名。

这样的事情:

    A    B    C    D
(data)(data)(data)Tools
(data)(data)(data)Spades
(data)(data)(data)Boots
(data)(data)(data)Spades
(data)(data)(data)Tools
(data)(data)(data)Boots
(data)(data)(data)Boots
(data)(data)(data)PPE
etc.

对此:

    A    B    C    D
(data)(data)(data)Boots
(data)(data)(data)Boots
(data)(data)(data)Boots
(data)(data)(data)PPE
(data)(data)(data)Spades
(data)(data)(data)Spades
(data)(data)(data)Tools
(data)(data)(data)Tools
etc.

然后是这样的:

    A    B    C    D
Boots
(data)(data)(data)Boots
(data)(data)(data)Boots
(data)(data)(data)Boots    
PPE
(data)(data)(data)PPE
Spades
(data)(data)(data)Spades
(data)(data)(data)Spades
Tools
(data)(data)(data)Tools
(data)(data)(data)Tools
etc.

我发现this并尝试调整它,但我收到一条错误消息,说'此命令需要列标签'..我的深度有点超出我的深度!

感谢任何帮助

代码按字母顺序编辑。对不起:)

1 个答案:

答案 0 :(得分:2)

无法理解为什么最终解决方案没有按字母顺序排序,猜猜你需要这个。
我没有阅读链接,只是尝试为您需要的东西编写代码:

Sub Macro1()

Dim i, n, values As Integer

n = 9 'last row, change it to your last row

With ActiveWorkbook.ActiveSheet

.Range("A1:D" & n).Select
Selection.Sort key1:=Range("D1:D" & n), _
    order1:=xlAscending, Header:=xlNo

'count how much different values are in column D that are the numbers of
'rown i'm going to add
values = 1
For i = 2 To n
    If .Cells(i, 4) <> .Cells(i - 1, 4) Then
    values = values + 1
    End If
Next

'do the trik for the first row
.Rows(1).Insert
.Cells(2, 4).Copy Destination:=.Cells(1, 1)

'for the others (start from the third row because the first is already
'been inserted and filled and the second contains in col. D what it's been
'copyed in row 1
For i = 3 To (n + values) Step 1
    If .Cells(i, 4) <> .Cells(i - 1, 4) Then
    .Rows(i).Insert
    .Cells(i + 1, 4).Copy Destination:=.Cells(i, 1)
    i = i + 1
    End If
Next
End With
End Sub

希望这就是你要找的东西。

埃托