Как взять набор данных в Excel и составить список, включающий каждую точку данных? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть большой набор данных, который мне нужно преобразовать в список. Данные включают прибытие пакетов. Мне нужно, чтобы список был составлен по времени прибытия.

В настоящее время мои данные выглядят так.

Excel picture of data set

В течение 1 часа (1:00) приходят 2 синих, 3 красных, 1 желтый и 2 оранжевых пакета.

В течение 2-го часа (2:00) прибывают 5 синих, 5 красных, 0 желтых и 3 оранжевых пакета.

Из этих данных мне нужно будет создать список, упорядоченный по времени прибытия для все пакеты. Это должно выглядеть примерно так.

Excel picture of arranged data set

Существуют ли функции Excel, которые могут помочь с этой процедурой?

1 Ответ

1 голос
/ 30 мая 2020

Для решения вопроса можно использовать PowerQuery.

Отформатируйте данные в виде таблицы (CTRL-T), назовите таблицу tbl_Packages и используйте этот M-код:

let
    Source = Excel.CurrentWorkbook(){[Name="tbl_Packages"]}[Content],
    Change_type = Table.TransformColumnTypes(Source,{{"Arrival Time", type text}, {"01:00", Int64.Type}, {"02:00", Int64.Type}, {"03:00", Int64.Type}, {"04:00", Int64.Type}}),
    Unpivot_Other = Table.UnpivotOtherColumns(Change_type, {"Arrival Time"}, "Time", "Count"),
    Filter_Rows = Table.SelectRows(Unpivot_Other, each ([Count] <> 0)),
    Custom_Column = Table.AddColumn(Filter_Rows, "LIst", each List.Numbers(1,[Count])),
    Expand_List = Table.ExpandListColumn(Custom_Column, "LIst"),
    Remove_other_columns = Table.SelectColumns(Expand_List,{"Arrival Time", "Time"}),
    Sort_Rows = Table.Sort(Remove_other_columns,{{"Time", Order.Ascending}, {"Arrival Time", Order.Ascending}})
in
    Sort_Rows

enter image description here

...