2014-11-03 130 views
0

我正在使用Excel 2007,并且在范围A1:A5000中有5000个语句,而范围B1:E5000中的每个语句都有四个备选。我想将它转换为另一个slyle,其中所有数据都在范围G1:25000中,其中所有四种替代方案都将归入每个Statement。我记录了一个宏,但我不知道如何循环,手动做是不可能的。在这里需要一些帮助...谢谢。VBA excel宏处理5000行和5列

例子:

Statement1 - AlternativeA 1 - AlternativeA 2 - AlternativeA 3 - AlternativeA 4 
Statement2 - AlternativeB 1 - AlternativeB 2 - AlternativeB 3 - AlternativeB 4 
Statement3 - AlternativeC 1 - AlternativeC 2 - AlternativeC 3 - AlternativeC 4 
Statement4 - AlternativeD 1 - AlternativeD 2 - AlternativeD 3 - AlternativeD 4 

输出:

Statement1 
AlternativeA 1 
AlternativeA 2 
AlternativeA 3 
AlternativeA 4 
Statement2 
AlternativeB 1 
AlternativeB 2 
AlternativeB 3 
AlternativeB 4 
Statement3 
AlternativeC 1 
AlternativeC 2 
AlternativeC 3 
AlternativeC 4 
Statement4 
AlternativeD 1 
AlternativeD 2 
AlternativeD 3 
AlternativeD 4 

回答

1

你真的不为此需要VBA。只需输入公式

G1:= INDEX($ A:$ E,INT((ROWS($ 1:1)-1)/ 5)+ 1,MOD(ROWS($ 1:1)-1,5) +1)

并填充到G25000。然后复制并粘贴特殊值

+0

精彩....谢谢。从来没有想过这可能已经完成使用工作表函数。干杯! – 2014-11-03 20:33:20

1

这应该转移并在每个转置值:E至G列

Sub AE_2G() 
    Dim r As Long, s As Variant 
    For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row 
     s = Cells(r, 1).Resize(1, 5) 
     Cells((r - 1) * 5 + 1, 7).Resize(5, 1) = Application.Transpose(s) 
    Next r 
End Sub 
+0

非常感谢你 – 2014-11-03 20:33:50