Forum Discussion

ExcelMagic's avatar
ExcelMagic
New Member
3 years ago
Solved

Bringing row values to row above if column if null

I am importing a spreedsheet from a pdf so naturally the data is a little bit messy. Almost every other row has a null value in the first column "Queue" because their are some values in different columns that spill over into the next row. I would like to concatenate the spilled values when Queue is equal to null so the data would be transformed from

QueueValue1MW
1New 105
nullGeneratornull

to

QueueValues1MW
1New Generator105
  • Hi ExcelMagic ,
    I would probably approach it like so:

    // Table1
    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Queue", Int64.Type}, {"Value1", type text}, {"MW", Int64.Type}}),
        CombineColumnNames = List.Skip(Table.ColumnNames(#"Changed Type")),
        #"Filled Down" = Table.FillDown(#"Changed Type",{"Queue"}),
        #"Grouped Rows" = Table.Group(#"Filled Down", {"Queue"}, {{"All", each #table(CombineColumnNames, {List.Transform(List.Skip(Table.ToColumns(_)), (l)=> Text.Combine(List.Transform(l, (i)=> Text.From(i)), " "))})}}),
        #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", CombineColumnNames)
    in
        #"Expanded All"

    Please also check the file enclosed.

1 Reply

  • ImkeF's avatar
    ImkeF
    Icon for Community Champion rankCommunity Champion

    Hi ExcelMagic ,
    I would probably approach it like so:

    // Table1
    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Queue", Int64.Type}, {"Value1", type text}, {"MW", Int64.Type}}),
        CombineColumnNames = List.Skip(Table.ColumnNames(#"Changed Type")),
        #"Filled Down" = Table.FillDown(#"Changed Type",{"Queue"}),
        #"Grouped Rows" = Table.Group(#"Filled Down", {"Queue"}, {{"All", each #table(CombineColumnNames, {List.Transform(List.Skip(Table.ToColumns(_)), (l)=> Text.Combine(List.Transform(l, (i)=> Text.From(i)), " "))})}}),
        #"Expanded All" = Table.ExpandTableColumn(#"Grouped Rows", "All", CombineColumnNames)
    in
        #"Expanded All"

    Please also check the file enclosed.