Skip to content

Instantly share code, notes, and snippets.

@bjulius
Created August 26, 2023 07:48
Show Gist options
  • Save bjulius/c674c5b1f25da3a6b7f44337eeb9d847 to your computer and use it in GitHub Desktop.
Save bjulius/c674c5b1f25da3a6b7f44337eeb9d847 to your computer and use it in GitHub Desktop.
Excel BI Power Query Challenge 107
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
FIlter = Table.SelectRows(Source, each ([Column1] <> null and [Column1] <> "Date")),
AddDate = Table.TransformColumnTypes(Table.AddColumn(FIlter, "Date", each if Value.Type( [Column1] ) = DateTime.Type then [Column1] else null), {"Date", Date.Type}),
AddPO = Table.AddColumn(AddDate, "PONumber", each if Value.Type([Column3]) = Text.Type then [Column3] else null),
AddSupplier = Table.AddColumn(AddPO, "Supplier ", each if [Column2] <> null then [Column2] else null),
AddTax = Table.AddColumn(AddSupplier, "Tax", each if Text.StartsWith( Text.From( [Column1]), "Tax") then [Column3] else null),
AddAmount = Table.RemoveColumns( Table.AddColumn(AddTax, "Amount", each if Text.StartsWith( Text.From( [Column1]), "Amount") then [Column3] else null), {"Column1", "Column2", "Column3"}),
RemBlanks = Table.AddIndexColumn( Table.SelectRows(AddAmount, each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null}))), "Index", 0, 1),
IdxMod = Table.TransformColumns(RemBlanks, {{"Index", each Number.IntegerDivide(_, 4), type number}}),
UnpivOther = Table.UnpivotOtherColumns(IdxMod, {"Index"}, "Attribute", "Value"),
Pivot = Table.Pivot(UnpivOther, List.Distinct(UnpivOther[Attribute]), "Attribute", "Value"),
Clean = Table.RemoveColumns( Table.AddColumn(Pivot, "POValve", each [Amount] + [Tax]), {"Index", "Amount", "Tax"})
in
Clean
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment