Forum Discussion

PravenBabu's avatar
PravenBabu
Regular Visitor
1 year ago
Solved

Add Values in a Column by matching conditions in other Columns and Rows

In Power query, i  have a large database of transactions in the format as below Date Item Code In Qty Out Qty 1/12/2024 A 100   1/14/2024 A   50 1/13/2024 B 200   1/14/202...
  • AlienSx's avatar
    1 year ago

     

     

     

    let
        fx = (x) => 
            [sorted_list = List.Buffer(Table.ToList(Table.Sort(x, "idx"), (x) => x)),
            rt = List.Generate(
                () => [i = 0, r = sorted_list{0}, net = List.Sum({r{2}, - r{3}})],
                (x) => x[i] < List.Count(sorted_list),
                (x) => [i = x[i] + 1, r = sorted_list{i}, net = List.Sum({x[net], r{2}, - r{3}})],
                (x) => x[r] & {x[net]}
            )
            ][rt],
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        idx = Table.AddIndexColumn(Source, "idx"),
        blank_to_nulls = Table.TransformColumns(idx, {}, (x) => if x = " " then null else x),
        group = Table.Group(blank_to_nulls, "Item Code", {"x", fx}),
        result = Table.RemoveColumns(
            Table.Sort(
                Table.FromList(List.Combine(group[x]), (x) => x, Table.ColumnNames(Source) & {"idx", "NET"}),
                "idx"
            ),
            "idx"
        )
    in
        result