Это также можно сделать в Power Query.
Пожалуйста, обратитесь к этой статье , чтобы узнать, как использовать Power Query в вашей версии Excel. Он доступен в Excel 2010 Professional Plus и более поздних версиях . Моя демонстрация использует Excel 2016 .
Шаги:
- Загрузите обе таблицы, являющиеся
time series of cash-flow
и вашим 2-column output table
, в редактор мощных запросов,тогда вы должны иметь:
Для первой таблицы
объединить столбец
Period
со столбцом
Cashflow
с точкой с запятой
;
в качестве разделителя; Транспонировать столбец / таблицу, а затем объединить столбцыс запятой
,
в качестве разделителя; Добавьте пользовательский столбец, используйте эту формулу
="Connector"
, которая заполнит столбец словом
Connector
, тогда вы должны иметь:
Для второй таблицы
также добавьте пользовательский столбец, используя ту же формулу
="Connector"
, которая заполнит столбец словом
Connector
; Объедините вторую таблицу сВ первой таблице, используя столбец
Custom
в качестве соединения, затем разверните новый столбец, чтобы показать столбец
Merged
из первой таблицы, затем вы должны иметь:
Удалите столбец
Custom
, затем разделите столбец
Merged
запятыми
,
и
, поместите результаты в строки ; Снова разделите столбец
Merged
наразделитель точкой с запятой
;
для отделения
Period
и
Cashflow
от первой таблицы; Добавление пользовательского столбца для вычисления
New Period
, являющегося
=[Period]+[Merged.1]
; Добавление другого пользовательскогоВ столбце для вычисления
Cashflow
, являющегося
=[#"# Tran"]*[Merged.2]
, у вас должно быть что-то вроде следующего:
Группировать / суммировать столбец
Cashflow
по
New Period
.
После этого вы можете Закрыть и загрузить результат на новый рабочий лист (по умолчанию). Если вы хотите отобразить столбец # Trans
в окончательном выводе, вы можете сделать копию своей второй таблицы перед внесением каких-либо изменений, а затем объединить ее с окончательной выходной таблицей в столбце Period
, чтобы отобразить соответствующее числотранзакции.
Вот коды мощности M запросов для первой таблицы:
let
Source = Excel.CurrentWorkbook(){[Name="Tbl_CFS"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Period", Int64.Type}, {"Cashflow", Int64.Type}}),
#"Merged Columns1" = Table.CombineColumns(Table.TransformColumnTypes(#"Changed Type", {{"Period", type text}, {"Cashflow", type text}}, "en-AU"),{"Period", "Cashflow"},Combiner.CombineTextByDelimiter(";", QuoteStyle.None),"Merged"),
#"Transposed Table" = Table.Transpose(#"Merged Columns1"),
#"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Transposed Table", {{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}}, "en-AU"),{"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"),
#"Added Custom" = Table.AddColumn(#"Merged Columns", "Custom", each "Connector")
in
#"Added Custom"
А вот коды для второй таблицы:
let
Source = Excel.CurrentWorkbook(){[Name="Tbl_Total"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Period", Int64.Type}, {"# Tran", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each "Connector"),
#"Merged Queries" = Table.NestedJoin(#"Added Custom", {"Custom"}, Tbl_CFS, {"Custom"}, "Tbl_CFS", JoinKind.LeftOuter),
#"Expanded Tbl_CFS" = Table.ExpandTableColumn(#"Merged Queries", "Tbl_CFS", {"Merged"}, {"Merged"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Tbl_CFS",{"Custom"}),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Removed Columns", {{"Merged", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Merged"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged", type text}}),
#"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "Merged", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Merged.1", "Merged.2"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Merged.1", Int64.Type}, {"Merged.2", Int64.Type}}),
#"Added Custom1" = Table.AddColumn(#"Changed Type2", "New Period", each [Period]+[Merged.1]),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Cashflow", each [#"# Tran"]*[Merged.2]),
#"Grouped Rows" = Table.Group(#"Added Custom2", {"New Period"}, {{"Sum", each List.Sum([Cashflow]), type number}})
in
#"Grouped Rows"
Все шагииспользуют встроенные функции, поэтому должны быть простыми и простыми в исполнении. Дайте мне знать, если есть какие-либо вопросы. Ура :) 1111 *