Power Interogare: Utilizarea clauzelor Else If din coloanele condiționate - Sfaturi Excel

Cuprins

Notă

Acesta este unul dintr-o serie de articole care detaliază soluțiile trimise pentru provocarea Podcast 2316.

În soluția mea de remodelare a datelor, am dorit o modalitate de a vedea dacă o coloană conținea un nume de angajat sau o valoare precum Q1, Q2, Q3, Q4. În soluția mea, am presupus că nimeni nu va avea un nume cu 2 caractere, așa că am adăugat o coloană pentru a calcula lungimea textului din coloană.

Jason M a evitat necesitatea coloanei Lungime prin adăugarea a trei clauze Else If în coloana sa Condițională.

Adăugați o coloană condițională

Calculul condițional pentru Angajat caută trimestrul să fie Nul: dacă (Trimestrul) = nul atunci (Descrierea categoriei) altul nul.

Calcul condiționat

Iată codul M al lui Jason:

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ý a trimis o soluție care folosea și mai multe clauze Else If:

Multiple altceva-dacă

Matthew Wykle a trimis o soluție cu încă un alt mod de a identifica cartierele. Metoda sa verifică atât faptul că textul începe cu Q, cât și a doua cifră este mai mică de 5:

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

Identificați cartierele

Christian Neuberger a folosit această formulă pentru a obține numele angajatului, completat și apoi filtrat coloana 1 pentru a include doar Q1, Q2, Q3 sau Q4. Oz Du Soleil a folosit și această metodă.

Coloana filtrată

MVP-ul Excelent Ken Puls câștigă probabil cu formula sa. Se pare o subliniere pentru a ști dacă acesta nu este numele angajatului.

Vedeți soluția completă a lui Ken la MVP-urile Excel Atacă problema de curățare a datelor în Power Query

În căutarea unui subliniat

Reveniți la pagina principală pentru provocarea Podcast 2316.

Citiți următorul articol din această serie: Power Query: Gestionarea mai multor anteturi identice.

Articole interesante...