Forum Discussion

h82bu30's avatar
h82bu30
New Member
1 year ago
Solved

Help Transposing

Hello,  The data that I receive has recurring rows under a date sub-heading, this pattern repeats every 9 rows (9th row is a blank and can be removed). I'm wondering how I can take the recurring dat...
  • SundarRaj's avatar
    1 year ago

    Hi h82bu30 , another PQ solution you could have a look at. I'll attach the images of the output and M Code used. Thanks!

    Here's the code:
    let
    Source = #table(
    {"ColP", "Col1", "Col2", "Col3", "Col4", "Col5", "Col6", "Col7"},
    {
    {"01/01/2025 - 01/31/2025", null, null, null, null, null, null, null},
    {null, "Job 1", "Job 2", "Job 3", "Job 4", "Job 5", "Job 6", "Job 7"},
    {"Person A", 23, null, null, null, null, null, null},
    {"Person B", 15, null, null, null, null, 4, 2},
    {"Person C", null, null, null, null, 4, null, null},
    {"Person D", 18, null, null, null, null, null, null},
    {"Person E", null, null, null, 19, 2, null, null},
    {"Person F", null, null, null, null, null, null, null},
    {"02/01/2025 - 02/28/2025", null, null, null, null, null, null, null},
    {null, "Job 1", "Job 2", "Job 3", "Job 4", "Job 5", "Job 6", "Job 7"},
    {"Person A", null, null, 17, null, 7, null, null},
    {"Person B", null, 11, 4, null, null, null, null},
    {"Person C", null, null, 7, null, null, 2, null},
    {"Person D", null, null, null, null, null, null, null},
    {"Person E", null, null, null, null, null, null, 4},
    {"Person F", null, null, null, null, null, null, null},
    {"03/01/2025 - 03/31/2025", null, null, null, null, null, null, null},
    {null, "Job 1", "Job 2", "Job 3", "Job 4", "Job 5", "Job 6", "Job 7"},
    {"Person A", null, null, null, null, null, null, null},
    {"Person B", null, 20, null, null, null, null, null},
    {"Person C", null, 13, null, null, null, null, null},
    {"Person D", null, 17, null, null, null, 4, null},
    {"Person E", null, null, null, 23, null, null, null},
    {"Person F", null, null, null, null, null, null, null}
    }
    ),
    Dates = Table.SelectRows(Source, each Text.Contains([ColP], "-"))[ColP],
    Count = List.Count(
    List.Distinct(Table.SelectRows(Source, each Text.Contains([ColP], "Person"))[ColP])
    ),
    Tables = Table.Split(Table.SelectRows(Source, each Text.Contains([ColP], "Person")), Count),
    ColNames = {"Person"} & List.RemoveNulls(Record.ToList(Source{1})),
    Rename = List.Transform(
    Tables,
    each Table.RenameColumns(_, List.Zip({Table.ColumnNames(_), ColNames}))
    ),
    Convert = Table.FromList(Rename, Splitter.SplitByNothing(), null, null, ExtraValues.Ignore),
    DateAdded = Table.TransformColumns(
    Table.AddIndexColumn(Convert, "Date", 0, 1),
    {"Date", each Dates{_}}
    ),
    Expand = Table.ExpandTableColumn(DateAdded, "Column1", ColNames, ColNames),
    Reorder = Table.ReorderColumns(Expand, ColNames)
    in
    Reorder

    I'll attach the file link here as well:
    https://docs.google.com/spreadsheets/d/1z1lA0Uqa_pAjagrLyi_ySN5ZpdGuOppg/edit?usp=sharing&ouid=104752674875039603034&rtpof=true&sd=true