Forum Discussion

Charcho's avatar
Charcho
Helper I
1 year ago
Solved

New Columns with Specific Row Values from other Columns in Multiple Excel Files

Hello, I’m loading multiple Excel files from a folder in a PBI query. I want to fill a new column with the value 'Apple' (Column3-row1) and another new column with the value '2025' (Column3-row3). Al...
  • dufoq3's avatar
    1 year ago

    Charcho, check this

     

    Output (first few columns)

     

    Change folder addres in Source step to folder with your excel files

     

    let
        Source = Folder.Files("c:\Users\abc\Downloads\PowerQueryForum\Charcho\"),
        FilteredExtension = Table.SelectRows(Source, each ([Extension] = ".xlsx")),
        TransformedContent = Table.TransformColumns(FilteredExtension, {{"Content", each 
            [   a = Excel.Workbook(_){0}[Data],
                // T = BinaryToTable{0}[Content],
                T = a,
                R = [ Fruit = T{0}[Column1], Year = T{2}[Column1] ],
                RemovedTopRows = Table.PromoteHeaders(Table.Skip(T, each not List.Contains(Record.ToList(_), "jan", Comparer.OrdinalIgnoreCase))),
                FilteredActualYear = Table.FirstN(RemovedTopRows, each not List.Contains(Record.ToList(_), "jan", Comparer.OrdinalIgnoreCase)),
                FilteredOutDiffAndTotal = Table.SelectRows(FilteredActualYear, each not ([Column1] = null) and not (List.Contains(Record.ToList(_), {"total", "diff"}, (x,y)=> List.AnyTrue(List.Transform(y, (w)=> (Text.Contains(Text.From(x), w, Comparer.OrdinalIgnoreCase))))))),
                RemovedBlankColumns =
                    [ blankCols = Table.SelectRows(Table.TransformColumnTypes(Table.Profile(FilteredOutDiffAndTotal),{{"NullCount", Int64.Type}, {"Count", Int64.Type}}), each [Count] = [NullCount])[Column],
                      removed = Table.RemoveColumns(FilteredOutDiffAndTotal, blankCols)
                    ][removed],
                RenamedColumns = Table.RenameColumns(RemovedBlankColumns,{{"Column1", "Numbers"}}),
                MergedColumns = Table.CombineColumns(RenamedColumns, List.FirstN(List.Skip(Table.ColumnNames(RenamedColumns)), each Text.StartsWith(_, "Column")) ,Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Titles"),
                RemovedSquareTitles = Table.TransformColumns(MergedColumns,{{"Titles", each Text.Trim(_, {"▪"}), type text}}),
                RemovedColumns = Table.SelectColumns(RemovedSquareTitles, List.Select(Table.ColumnNames(RemovedSquareTitles), each not Text.StartsWith(_, "Column"))),
                RenamedColumns2 = Table.RenameColumns(RemovedColumns,{{Table.ColumnNames(RemovedColumns){2}, "DecPrevious"}}),
                    RenamedColumns3 = Table.TransformColumnNames(RenamedColumns2, each Text.BeforeDelimiter(_, "_")),
                Ad_FuitAndYear = Table.FillDown(Table.FromColumns({{R[Fruit]}} & {{R[Year]}} & Table.ToColumns(RenamedColumns3), {"Fruit", "Year"} & Table.ColumnNames(RenamedColumns3)), {"Fruit", "Year"})
            ][Ad_FuitAndYear], type table}}),
        Combined = Table.Combine(TransformedContent[Content])
    
    in
        Combined