2015-11-12 34 views
-1

我试图写在VBA宏来转列行这种风格:转换行组从列格式列组行格式

是:

A 
B 
C 

D 
E 
F 

应成为:

A D 
B E 
C F 

有没有人有任何想法?

+0

我们需要更多信息。它是每三行,需要复制过来吗?每个小组直到空白?你试过什么了?请发布您尝试的方法以及任何代码。此外,它会帮助阅读[如何提出问题](http://stackoverflow.com/help/how-to-ask)。 – BruceWayne

+0

每组需要“转移”的值的数量是13.我有65个组。直到现在,我已经尝试过使用excel命令(索引等),但它不能正常工作。我试图编辑已经上传的vba脚本,他们大多数都是简单的列到行而不是这种风格。 – GeMa

+0

事实上,这是比“转置”或“转换”更“复制”的功能。 – GeMa

回答

1

这应该为你工作:

Sub test() 
Dim lastRow&, groupSize&, i&, k& 
Dim rng As Range 

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

groupSize = 13 
k = 2 ' start the pasting in the second column 

For i = 14 To lastRow 
    Set rng = Range(Cells(i, 1), Cells(i + groupSize - 1, 1)) 
    rng.Cut Range(Cells(1, k), Cells(13, k)) 
    i = i + 12 
    k = k + 1 
Next i 

End Sub 
+0

这个效果非常好!万分感谢! – GeMa

1

这是BruceWayne的正确答案的修改:

Sub test() 
Dim lastRow&, groupSize&, i&, k& 
Dim rng As Range 

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

groupSize = 13 
k = 1 ' start the pasting in the first column 
j = 1 

For i = 1 To lastRow 
    Set rng = Range(Cells(i, 1), Cells(i + groupSize - 1, 1)) 
    rng.Cut Range(Cells(j, k), Cells(j + 12, k)) 
    k = k + 1 
    i = i + 12 
    If k = 14 Then 
    k = 1 
    j = j + 13 
    End If 
Next i 

End Sub 

唯一不同的是,现在的数据都在一个排不写但在一组行中。所有学分给布鲁斯韦恩。