„Power Query“: kitų sąlygų naudojimas sąlyginiuose stulpeliuose - „Excel“ patarimai

Turinys

Pastaba

Tai vienas iš straipsnių serijos, kuriame pateikiami išsamūs sprendimai, atsiųsti iššūkiui „Podcast 2316“.

Duomenų pertvarkymo sprendime norėjau sužinoti, ar stulpelyje yra darbuotojo vardas, ar tokia vertė kaip Q1, Q2, Q3, Q4. Savo sprendime aš dariau prielaidą, kad niekas neturės pavadinimo su 2 simboliais, todėl pridėjau stulpelį, kad apskaičiuočiau stulpelio teksto ilgį.

Jasonas M išvengė stulpelio „Ilgis“ poreikio, į savo Sąlyginį stulpelį įtraukdamas tris „Else If“ straipsnius.

Pridėti sąlyginį stulpelį

Tada sąlyginis darbuotojo skaičiavimas ieško, kad ketvirtis būtų tuščias: jei (ketvirtis) = nulinis, tada (kategorijos aprašas) dar nėra.

Sąlyginis skaičiavimas

Čia yra Jasono M kodas:

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ý atsiuntė sprendimą, kuriame taip pat buvo panaudotos kelios „Else If“ sąlygos.

Keli kiti, jei

Matthew'as Wykle'as pasiūlė dar vieną būdą nustatyti kvartalus. Jo metodas patikrina, ar tekstas prasideda Q, o antrasis skaitmuo yra mažesnis nei 5:

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

Nustatykite ketvirčius

Christianas Neubergeris naudojo šią formulę norėdamas gauti Darbuotojo vardą, Užpildytą ir tada Filtruotą 1 stulpelį, kad būtų įtrauktas tik Q1, Q2, Q3 arba Q4. „Oz Du Soleil“ taip pat naudojo šį metodą.

Filtruotas stulpelis

„Excel“ MVP Kenas Pulsas greičiausiai laimi savo formule. Norint sužinoti, ar tai ne darbuotojo vardas, reikia pabraukimo.

Žr. Išsamų Keno sprendimą „Excel MVPs Attack Data Cleansing Power Power Query“.

Ieškoma pabraukimo

Grįžkite į pagrindinį „Podcast 2316“ iššūkio puslapį.

Perskaitykite kitą šios serijos straipsnį: „Power Query“: kelių identiškų antraščių sprendimas.

Įdomios straipsniai...