【问题标题】:Transpose multiple cells from multiple rows to a single row in Excel在 Excel 中将多个单元格从多行转换为单行
【发布时间】:2017-05-31 05:42:25
【问题描述】:

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

Example Data

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

Desired Format

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

=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 代码。

【问题讨论】:

  • 我按照你的编号放入了图片,但在我看来它们是倒退的?

标签: excel accelerometer transpose


【解决方案1】:

这个怎么样。它将转置的行放入第二张表中(为简单起见,我硬编码了名称“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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多