将数据从多列移动到单行

时间:2014-01-03 20:46:57

标签: excel transpose

这种格式化问题令我感到困惑。我不是Excel之王,非常感谢我解决问题。

我正在尝试按日期将多列中的数据格式化为单行。即:

enter image description here

我试图寻找有关转置的解决方案,但这似乎有点涉及。我有每个日期的4x数据结果(如前一栏中所示)。

3 个答案:

答案 0 :(得分:2)

这是一个简单的循环,在工作表中自下而上,将最后一行移到4列,然后在上面复制行,然后删除上面的行。

Sub TransposeData()
    Dim WS As Worksheet
    Dim LastCell As Range
    Dim LastCellRowNumber As Long

    Set WS = Worksheets("Sheet1")
    With WS
        Set LastCell = .Cells(.Rows.Count, "A").End(xlUp)
        LastCellRowNumber = LastCell.Row
    End With

    'Loop through column A bottom up
    For i = LastCellRowNumber To 2 Step -1
        'Shift current values over
        Range("A" & i & ":D" & i).Insert Shift:=xlToRight

        'Copy new values down
        Range("A" & i & ":D" & i).Value = Range("A" & i - 1 & ":D" & i - 1).Value

        'Delete row
        Rows(i - 1).Delete Shift:=xlUp
    Next i
End Sub

在:

enter image description here

后:

enter image description here

答案 1 :(得分:1)

您可以使用NotePad++统一行.csv文件,然后再次在Excel上导入新的格式化信息。

1-以逗号分隔值格式(.csv)保存电子表格 2-在NotePad ++中,单击:编辑 - >线操作 - >加入线 3-用逗号(“,”)替换空格(“”)。你应该得到3个替代品。

现在您只有一行所有值以逗号分隔。

4-保存并在Excel上导入这个新文件。

答案 2 :(得分:1)

根据this,有几种选择:

  1. Item 3:输入A8

    has_many :through

    根据需要复制到右侧。

  2. 您也可以使用=OFFSET($A$2,INT((COLUMN()-COLUMN($A$8))/4),MOD(COLUMN()-COLUMN($A$8),4))