将多个单元格从多行转置为 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
我有一个大型数据集,其中包含每组五组 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