2017-05-30 70 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 
相关问题