kms2020, груши на 1м складе не сходятся с "как должно быть". 1й поставщик поставил только 2, первый расход равен 3, а вы его полностью покрываете за счет поставки от 1-го поставщика. Сделал под данные примера, где кол-во - в штуках.
power query |
---|
let fx = (tbl) => [sklad = tbl[СКЛАД]{0}, code = tbl[КОД]{0}, received = List.FirstN( group_in{[СКЛАД = sklad, КОД = code]}[x], Table.RowCount(tbl) ), z = Table.FromColumns( Table.ToColumns(tbl) & {received}, Table.ColumnNames(tbl) & {"ПОСТАВЩИК"} )][z], // поступление приход = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], qty_list = Table.TransformColumns(приход, {"КОЛ-ВО", (x) => List.Repeat({1}, x)}), xpand = Table.ExpandListColumn(qty_list, "КОЛ-ВО"), group_in = Table.Buffer( Table.Group( xpand, {"СКЛАД", "КОД"}, {"x", (x) => Table.Sort(x, {"ДАТА ПОСТУПЛЕНИЯ", "ПОСТАВЩИК"})[ПОСТАВЩИК]} ) ), // расход расход = Excel.CurrentWorkbook(){[Name="Table2"]}[Content], idx = Table.AddIndexColumn(расход, "idx"), list_qty = Table.AddColumn(idx, "qty", (x) => List.Repeat({1}, x[#"КОЛ-ВО"])), xpand_qty = Table.ExpandListColumn(list_qty, "qty"), group_out = Table.Combine(Table.Group(xpand_qty, {"СКЛАД", "КОД"}, {"out", fx})[out]), result = Table.Group( group_out, Table.ColumnNames(расход) & {"idx"}, {"ПОСТАВЩИК", (x) => Text.Combine(List.Distinct(x[ПОСТАВЩИК]), ", ")} ) in result |