Вы можете использовать немного пользовательского кода PowerQuery, вставленного в home ... расширенный редактор ...
Если данные загружены в Table1, в третьей строке будет добавлен столбец, который является минимальной датой для всех строки с соответствующими Компонентом и Типом. Затем четвертая строка проверяет, совпадает ли дата текущей строки с минимальной; если это так, он показывает баланс, в противном случае ноль
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Component", type text}, {"Type", type text}, {"Date", type date}, {"AccumulateBalance", Int64.Type}}),
AddMinDateColumn = Table.AddColumn(#"Changed Type", "Earliest Date", (thisrow) => List.Min(Table.SelectRows(#"Changed Type", each [Component] = thisrow[Component] and [Type] = thisrow[Type])[Date]), type date),
#"Added Custom" = Table.AddColumn(AddMinDateColumn, "OpenBalance", each if [Date]=[Earliest Date] then [AccumulateBalance] else 0)
in #"Added Custom"
. Другой способ состоит в том, чтобы выбрать столбцы Компонент и Тип и сгруппировать их, используя минимум столбца Date и AllRows. Если вы развернете столбец AccumulateBalance и удалите дубликаты, это даст вам таблицу минимальных дат и их значений. Затем вы можете объединить его обратно в исходное сопоставление таблиц по Компоненту, Типу и Дате и развернуть поле Баланс. Пример ниже, который можно вставить в Home ... расширенный редактор ... Предполагается, что данные загружаются в Table1
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Component", type text}, {"Type", type text}, {"Date", type date}, {"AccumulateBalance", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Component", "Type"}, {{"MinDate", each List.Min([Date]), type date}, {"Data", each _, type table}}),
#"Expanded Data" = Table.ExpandTableColumn(#"Grouped Rows", "Data", {"AccumulateBalance"}, {"Data.AccumulateBalance"}),
Table2= Table.Distinct(#"Expanded Data"),
#"Merged Queries" = Table.NestedJoin(#"Changed Type",{"Component", "Type", "Date"},Table2,{"Component", "Type", "MinDate"},"Table2",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Data.AccumulateBalance"}, {"OpeningBalance"})
in #"Expanded Table2"