如何转换Excel数据

时间:2018-06-27 17:16:02

标签: excel

我有来自外部源的数据进入Excel,如下所示:

**Column A**          **Column B**
6/26/2017             null
Temperature           27
Pressure              5
6/27/2017             null
Temperature           29
Pressure              4

我想要这样:

**Column A (Date)**          **Column B (Temp)**          **Column C (PSI)**
6/26/2017                    27                           5
6/27/2017                    29                           4

既然数据是通过“全部刷新”输入的,那么我该如何将其推入这样的列?

3 个答案:

答案 0 :(得分:0)

如果您确定数据的周期性,则可以使用OFFSET function

  • 添加具有新月形索引的辅助列;
  • =OFFSET($A$1; ($E2-1)*3; 0)填写“列日期”,其中:
    • A1指的是外部数据中的第一个单元格( 6/26/2017
    • E2指向您的索引,应用了我的函数的单元格为F2

答案 1 :(得分:0)

如果要“推送”,则需要VBA之类的东西,尽管可以使用公式(在C2中,复制到D2并成对复制以适合):

=OFFSET(A2,1,1)

,但是如果要删除多余的列和行,则需要将其转换为值(例如,使用选择性粘贴)。而且这不会像数据透视表那样容易地“刷新”。

答案 2 :(得分:0)

尝试从最后一个日期到顶部开始工作。

Dim i As Long

With Worksheets(4)
    For i = Application.Match(1E+99, .Range("A:A")) To 1 Step -3
        .Cells(i, "C") = .Cells(i + 2, "B").Value
        .Cells(i, "B") = .Cells(i + 1, "B").Value
        .Cells(i + 1, "A").Resize(2, 1).EntireRow.Delete
    Next i
    .Cells(1, "A").EntireRow.Insert
    .Cells(1, "A").Resize(1, 3) = Array("**Column A (Date)**", "Column B (Temp)", "**Column C (PSI)**")
End With