Power-forespørgsel: Brug af andre hvis klausuler i betingede kolonner - Excel-tip

Indholdsfortegnelse

Bemærk

Dette er en af ​​en række artikler, der beskriver løsninger sendt til Podcast 2316-udfordringen.

I min løsning til omformning af dataene ønskede jeg en måde at se, om en kolonne indeholdt et medarbejdernavn eller en værdi som Q1, Q2, Q3, Q4. I min løsning antog jeg, at ingen ville have et navn med 2 tegn, og så tilføjede jeg en kolonne for at beregne længden af ​​teksten i kolonnen.

Jason M undgik behovet for kolonnen Længde ved at tilføje tre andre hvis klausuler til hans betingede kolonne.

Tilføj betinget kolonne

Den betingede beregning for medarbejder ser derefter ud til, at kvartal er nul: hvis (kvartal) = null, så (kategoribeskrivelse) ellers null.

Betinget beregning

Her er Jasons M-kode:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Transposed Table" = Table.Transpose(Source), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Added Conditional Column" = Table.AddColumn(#"Promoted Headers", "Quarter", each if (Category Description) = "Q1" then (Category Description) else if (Category Description) = "Q2" then (Category Description) else if (Category Description) = "Q3" then (Category Description) else if (Category Description) = "Q4" then (Category Description) else null), #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "Employee", each if (Quarter) = null then (Category Description) else null), #"Filled Up" = Table.FillUp(#"Added Conditional Column1",("Quarter")), #"Filled Down" = Table.FillDown(#"Filled Up",("Employee")), #"Inserted Distinct Count" = Table.AddColumn(#"Filled Down", "Distinct Count", each List.NonNullCount(List.Distinct(((Category Description), (Employee)))), Int64.Type), #"Filtered Rows1" = Table.SelectRows(#"Inserted Distinct Count", each (Distinct Count) 1), #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1",("Distinct Count")), #"Removed Columns" = Table.RemoveColumns(#"Removed Columns1",("Category Description")), #"Filtered Rows" = Table.SelectRows(#"Removed Columns", each ((Employee) "Dept. Total")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Filtered Rows", ("Quarter", "Employee"), "Attribute", "Value"), #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",(("Attribute", "Category Description"))), #"Pivoted Column" = Table.Pivot(#"Renamed Columns", List.Distinct(#"Renamed Columns"(Quarter)), "Quarter", "Value"), #"Inserted Sum" = Table.AddColumn(#"Pivoted Column", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), type number), #"Reordered Columns" = Table.ReorderColumns(#"Inserted Sum",("Category Description", "Employee", "Q1", "Q2", "Q3", "Q4", "Total")) in #"Reordered Columns"

Ondřej Malinský sendte en løsning ind, der også anvendte flere Else If-klausuler:

Flere ellers-hvis

Matthew Wykle sendte en løsning med endnu en måde at identificere kvartererne på. Hans metode kontrollerer både, at teksten starter med Q, og at det andet ciffer er mindre end 5:

if Text.Start((Attribute),1)="Q" and Number.From(Text.Middle((Attribute),1,1))<5 then Text.Start((Attribute),2) else "Total")

Identificer kvartaler

Christian Neuberger brugte denne formel til at få medarbejdernavn, udfyldt og derefter filtreret kolonne 1 for kun at omfatte Q1, Q2, Q3 eller Q4. Oz Du Soleil brugte også denne metode.

Filtreret kolonne

Excel MVP Ken Puls vinder sandsynligvis med sin formel. Det ser efter en understregning for at vide, om dette ikke er medarbejdernavnet.

Se Ken's fulde løsning på Excel MVP'er Attack the Data Cleansing Problem in Power Query.

På udkig efter en understregning

Gå tilbage til hovedsiden for Podcast 2316-udfordringen.

Læs den næste artikel i denne serie: Power Query: Dealing with Multiple Identical Headers.

Interessante artikler...