【问题标题】:Move data from multiple columns into single row将数据从多列移动到单行
【发布时间】:2014-01-03 20:46:56
【问题描述】:

这个格式问题让我很困惑。我不是 Excel 之王,非常感谢我的问题的解决方案。

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

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

【问题讨论】:

    标签: excel transpose


    【解决方案1】:

    这是一个简单的循环,它在工作表中自下而上运行,将最后一行移动 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
    

    之前:

    之后:

    【讨论】:

    • +1。但是,代码似乎错过了“之前”阶段 B 列中单元格的时间格式,“之后”阶段中 B、F 和 J 列的单元格。
    【解决方案2】:

    您可以使用NotePad++ 将行合并为 .csv 文件中的行,然后再次在 Excel 中导入新的格式化信息。

    1- 以逗号分隔值格式 (.csv) 保存您的电子表格。
    2- 在 NotePad++ 中,点击:Edit->Line Operations->Join Lines.
    3-用逗号(“,”)替换空格(“”)。你应该得到3个替换。

    现在您只有一行,所有值都用逗号分隔。

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

    【讨论】:

      【解决方案3】:

      根据this,有几种选择:

      1. Item 3:进入A8

        =OFFSET($A$2,INT((COLUMN()-COLUMN($A$8))/4),MOD(COLUMN()-COLUMN($A$8),4))

        根据需要复制到右侧。

      2. 您也可以使用INDEX

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-06
        • 2012-10-28
        • 1970-01-01
        • 2012-09-17
        • 2021-11-27
        • 2021-01-17
        • 1970-01-01
        相关资源
        最近更新 更多