2017-05-30 97 views
0

我有一組包含五組x,y,z值的大型數據集。它目前設置爲單行,每個值在其自己的單元格中,用於組內的每個間隔。在Excel中將多個單元格從多行轉換爲單個行

Example Data

enter image description here

我需要按組進行轉置的行的每個值(X,Y,Z)。

Desired Format

enter image description here

我已經能夠找到最接近的就是轉值一列的功能;

=INDEX($A$2:$C$6,1+INT((ROWS(E$2:$E2)-1)/COLUMNS($A$2:$C$6)),1+MOD(ROWS(E$2:$E2)-1,COLUMNS($A$2:$C$6)))) 

理想情況下,我將能夠自動填充一個函數來爲整個數據集按組創建行。如果有更簡單的方法,打開VBA腳本或R代碼。

+0

我把照片放在你編號的照片上,但在我看來他們倒退了? – teylyn

回答

0

這個怎麼樣。它將轉置的行放入第二個工作表(爲簡單起見,我對名稱「Sheet1」和「Sheet2」進行了硬編碼,但如果它們不匹配,請務必對其進行更改)。另外,我對最後一行#進行了硬編碼,但如果您希望代碼爲您確定最後一行,則可以使用ActiveSheet.UsedRange.Rows.Count,如here所述。

Sub TransposeRows() 

Dim sourceRowPtr, destRowPtr, sourceColPtr, destColPtr, lastRow 

'******** 
'set this to the end 
lastRow = 500 
'******** 

sourceRowPtr = 2 
destRowPtr = 1 
sourceColPtr = 1 

While sourceRowPtr <= lastRow 
    For destColPtr = 1 To 15 
     Worksheets("Sheet2").Cells(destRowPtr, destColPtr).Value = Worksheets("Sheet1").Cells(sourceRowPtr, sourceColPtr).Value 
     sourceColPtr = sourceColPtr + 1 

     If sourceColPtr = 4 Then 
      sourceColPtr = 1 
      sourceRowPtr = sourceRowPtr + 1 
     End If 

    Next destColPtr 

    destRowPtr = destRowPtr + 1 
Wend 


End Sub 
相關問題