转置并粘贴特殊行到列

我有一个Excel表格,其中包含两列中的数据格式如下:

类别1子类别1

类别1子类别2

类别2子类别1

类别2子类别2

类别2子类别3

等等。 一个类别下的子类别的数量是不一样的,所以有些类别有2个子类别,有些是15个。我希望输出的格式是:

类别1子类别1子类别2

类别2子类别1子类别2子类别3

现在,我已经在第三列的一个类别中添加了子类别的数量,并运行以下代码(从互联网上获取)

Sub Trans() Dim rng As Range Dim I As Long Dim rng2 As Range Dim x As Long Set rng = Range("b1") Set rng2 = Range("C1") While rng.Value <> "" I = I + 1 x = rng2.Value rng.Resize(x).Copy Range("E" & I).PasteSpecial Transpose:=True Set rng = rng.Offset(x) Wend End Sub 

问题是我无法得到想要的结果,因为我无法改变x的值来反映特定类别中子类别的数量。 任何帮助这个代码或新的方式来实现这一点,将不胜感激。 谢谢

您需要为类别中的每个更改增加行。

 Sub Trans() Dim rng As Range Dim x As Long, y As Long Dim category As String Set rng = Range("B1") Set rng2 = Range("C1") For Each rng In Range("B1", Range("B1").End(xlDown)) If rng <> category Then category = rng.Value y = 0 x = x + 1 Range("E1").Offset(x - 1, y) = category End If y = y + 1 Range("E1").Offset(x - 1, y) = rng.Offset(0, 1) Next End Sub 

在这里输入图像说明