Начните с того места, где вы находитесь в своей рабочей таблице,
- Добавьте Индексный столбец Начните с
0
с 1
на приращение; - Дублируйте запрос и измените шаг Index Column , чтобы начать с
1
с 1
на приращение; - Слияние второйзапрос с первым запросом. В окне
Merge
, удерживая нажатой клавишу Ctrl на клавиатуре и последовательно выбирая столбцы ID
и Index
в обоих запросах, как показано ниже (обратите внимание, что на моем скриншоте RowData (3)
- дублированный запросв то время как RowData (2)
является исходным запросом):
Разверните объединенный столбец, чтобы показать
From
дату и
Использовать исходное имя столбца в качестве префикса ; Добавить
Пользовательский столбец с помощьюследующая формула:
=if [#"RawData.From"]=null then [On] else Date.AddDays([#"RawData.From"],-1)
Удалите ненужных столбцов по желанию и сортируйте таблицу (необязательный шаг).
Затем можно добавить другой пользовательский столбец внайти дни между From
и To
за ID
за Name
.
РЕДАКТИРОВАТЬ # 2
Вы можете добавить два Индекс столбцы к исходному запросу вместо создания дублированного запроса. Обязательно отсортируйте запрос по ID
по From
, а затем добавьте столбцы Index , один из которых начинается с 0
, а другой - с 1
, затем объедините запрос с самим собой, выбравправильные столбцы, как показано ниже, и остальные шаги одинаковы.
Вот коды M заСцена для справки.
let
Source = Excel.CurrentWorkbook(){[Name="RawData"]}[Content],
#"Filter [null]" = Table.SelectRows(Source, each [ID] <> null and [ID] <> ""),
#"Remove [Duplicates]" = Table.Distinct(#"Filter [null]", {"ID"}),
#"Unpivot [Table]" = Table.UnpivotOtherColumns(#"Remove [Duplicates]", {"ID"}, "Date", "TM"),
#"Detect Data Type" = Table.TransformColumnTypes(#"Unpivot [Table]",{{"ID", Int64.Type}, {"Date", type date}, {"TM", type text}}),
#"Group [Table]" = Table.Group(#"Detect Data Type", {"ID", "TM"}, {{"From", each List.Min([Date]), type date}, {"On", each List.Max([Date]), type date}}, GroupKind.Local),
#"Sorted Rows" = Table.Sort(#"Group [Table]",{{"ID", Order.Ascending}, {"From", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 0, 1),
#"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index.1", 1, 1),
#"Merged Queries" = Table.NestedJoin(#"Added Index1", {"ID", "Index.1"}, #"Added Index1", {"ID", "Index"}, "Added Index1", JoinKind.LeftOuter),
#"Expanded Added Index1" = Table.ExpandTableColumn(#"Merged Queries", "Added Index1", {"From"}, {"Added Index1.From"}),
#"Added Custom" = Table.AddColumn(#"Expanded Added Index1", "To", each if [Added Index1.From]=null then [On] else Date.AddDays([Added Index1.From],-1)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"On","Index", "Index.1", "Added Index1.From"})
in
#"Removed Columns"
Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1083 *