在 Excel 中将每 7 列移动到新行

在 Excel 中将每 7 列移动到新行

我在 Excel 中有一个非常大的数据集;所有结果分数都在一列中。我需要将这些分数分成几行,以便每组 7 个分数(即分数 2-8、9-16 等)都在各自的行中(这样每行将是一个单独的分数,每列将是一个不同时间的分数,总共 7 个时间)。

我如何在 Excel 中执行此操作?

答案1

由于您没有说明您使用的 Excel 版本,也没有提供数据示例。因此,任何“正确答案”都只是胡乱猜测。

如果您使用的是 Excel 2010,并且您的分数以逗号分隔(即 23-42、11-17、1-5),则使用文本分列(数据 > 数据工具 > 文本分列;将分数分成单独的列。

然后在每 7 个单独的行后插入一行,并使用 concatinate 将它们以 7 个为一组连接在一起

=B1&C1&D1&E1&F1&G1&H1

如果这不是“正确答案”,请给我们一个数据示例并告诉我们您使用的 Excel 版本。

答案2

与这里的其他发帖者一样,我对您的数据做了一些假设。见下文。我假设每个分数每次都对应一个名字,每个名字有 7 次。因此,您可以先按名字对数据进行排序。然后,假设“时间”并不真正相关,您可以添加“TimeNumber”列。最后,构建一个数据透视表。

在此处输入图片描述

答案3

最简单的方法是使用 VBA 宏:

Sub Every7()
    Dim i As Integer, j As Integer, cl As Range
    Dim myarray(100, 6) As Integer 'I don't know what your data is.  Mine is integer data
    'Change 100 to however many rows you have in your original data, divided by seven, round up
    'remember arrays start at zero, so 6 really is 7

    If MsgBox("Is your entire data selected?", vbYesNo, "Data selected?") <> vbYes Then
        MsgBox ("First select all your data")
    End If

    'Read data into array
    For Each cl In Selection.Cells
        Debug.Print cl.Value
        myarray(i, j) = cl.Value
        If j = 6 Then
            i = i + 1
            j = 0
        Else
            j = j + 1
        End If
    Next

    'Now paste the array for your data into a new worksheet
    Worksheets.Add
    Range(Cells(1, 1), Cells(101, 7)) = myarray
End Sub

这需要这样的:

图片1

并将其转换为:

图片2

相关内容