转换时间序列格式

时间:2018-04-25 12:14:15

标签: excel excel-vba vlookup vba

我有一个时间序列的数据集(df)如下:

arg3

想法是将其转换为:

date          symbol   close
09/01/2018    ACA      132.1
10/01/2018    ACA      134.4
...
28/04/2013    BA       22.12
...
21/01/2016    DIL      180.01
...

因此,在第一列上花费最长的时间,并匹配其他列的收盘价。我想可以用date ACA BA DIL 28/04/2013 NaN 22.12 NaN ... 21/01/2016 NaN 23 180.01 ... ... ... 10/01/2018 134.4 32.2 181.3 VLOOKUP()以某种方式完成。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Powerquery执行此操作。

步骤1:在数据范围内选择一个填充的单元格Goto PowerQuery选项卡,如果在Excel 2016(并且已安装免费添加)或2016年的数据选项卡>数据>得到&变换>从表

Select a cell then Data > From table

第2步:确保将date列格式化为日期

Date column

第3步:按升序排序date

Ascending column sort

第4步:选择symbol列>转换标签>透视列

Select column and choose pivot column

确保值部分正在使用Close

Values using Close for pivot on Symbol column

步骤5:根据需要重新排列列

Re-arranged columns

第6步:关闭并 加载到页面

Close and load (choose lower option of too page)

注意:您不要用NaN替换Null。导出到工作表时,这些单元格将为空白。

M代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"date", type date}, {"symbol", type text}, {"close", type number}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"date", Order.Ascending}}),
    #"Pivoted Column" = Table.Pivot(#"Sorted Rows", List.Distinct(#"Sorted Rows"[symbol]), "symbol", "close", List.Sum),
    #"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",{"date", "ACA", "BA", "DIL"})
in
    #"Reordered Columns"