2013-02-25 50 views
1

我是新來的VBA Excel和我試圖代碼,將轉換表如下所示的宏:VBA Excel宏移調特定矩陣

Time Station1 
0  150.0 
60  250.0 
200  450.0 
250  650.0 
...  ... 

成轉表像與值緊隨其後:

Time 0 60 200 250 ... Station1 150.0 250.0 450.0 650.0 

到目前爲止,我一直在使用一些變調功能,但我需要預先知道的大小。

[編輯]

我使用與B2中的表中的下列代碼:C6

Sub Worksheet_Change() 

Set Target = ActiveCell 
Application.ScreenUpdating = False 
[B2:C6].Copy 
[E2].PasteSpecial Paste:=xlPasteValues, Transpose:=True 
Application.CutCopyMode = False 
Target.Select 

End Sub 

它或多或少複製/手工粘貼..

+1

歡迎堆棧溢出!你能告訴我們你試過的東西嗎? – IronMan84 2013-02-25 15:48:13

+0

嗨。謝謝你在這個平臺上歡迎我。 – 2013-02-25 17:06:21

回答

2

當使用Application.WorksheetFunction.Transpose(),你不需要知道變量數組的大小。但是,如果您指的是兩欄中最後使用的行,請嘗試下面的代碼。

就你而言,你可以嘗試使用兩個變體數組來將多行分成一行中的多列

代碼:

Option Explicit 

Sub rowsToColumns() 
Dim vCol1 As Variant, vCol2 As Variant 
Dim lastRow As Long 
Dim WS As Worksheet 

Set WS = Sheets(2) 
lastRow = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row 
'--since data starting with row 2 
lastRow = lastRow - 1 
vCol1 = WorksheetFunction.Transpose(WS.Range("B2").Resize(lastRow).Value) 
vCol2 = WorksheetFunction.Transpose(WS.Range("C2").Resize(lastRow).Value) 

'-- output to sheet 
WS.Range("B10").Resize(1, UBound(vCol1)) = vCol1 
WS.Range("B11").Resize(1, UBound(vCol2)) = vCol2 

End Sub 

表視圖:

enter image description here

+0

感謝bonCodigo。它更加優雅和靈活。 – 2013-02-25 17:14:51