将多个单元格从多行转置为 Excel 中的单行

Transpose multiple cells from multiple rows to a single row in Excel

我有一个大型数据集,其中包含每组五组 x、y、z 值。它目前设置为单行,对于组内的每个间隔,每个值都在其自己的单元格中。

Example Data

我需要按组转置行中的每个值 (x, y, z)。

Desired Format

我能找到的最接近的东西是将值转置到单个列的函数;

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

理想情况下,我将能够自动填充一个函数来为整个数据集按组创建行。如果有更简单的方法,请打开 VBA 脚本或 R 代码。

这个怎么样。它将转置的行放入第二个 sheet(为简单起见,我对名称 "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