Tehokysely: Muiden if-lausekkeiden käyttö ehdollisissa sarakkeissa - Excel-vinkit

Sisällysluettelo

Huomautus

Tämä on yksi artikkelisarjasta, joka sisältää yksityiskohtaiset ratkaisut, jotka lähetettiin Podcast 2316 -haasteeseen.

Ratkaisussa tietojen muokkaamiseen halusin tapaa nähdä, onko sarakkeessa työntekijän nimi vai arvo, kuten Q1, Q2, Q3, Q4. Ratkaisussani oletin, ettei kenelläkään ole nimeä, jossa on 2 merkkiä, ja lisäsin sarakkeen laskemaan sarakkeen tekstin pituuden.

Jason M välttänyt Pituus-sarakkeen tarvetta lisäämällä Ese-sarakkeeseensa kolme muuta If-lauseketta.

Lisää ehdollinen sarake

Työntekijän ehdollinen laskelma etsii sitten, että vuosineljännes on tyhjä: if (vuosineljännes) = null sitten (luokan kuvaus) muu tyhjä.

Ehdollinen laskenta

Tässä on Jasonin M-koodi:

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ý lähetti ratkaisun, joka käytti myös useita muita If-lausekkeita:

Useita muita, jos

Matthew Wykle lähetti ratkaisun, jolla oli vielä yksi tapa tunnistaa asuinalueet. Hänen menetelmä tarkistaa sekä tekstin alkavan Q: lla että toisen numeron ollessa alle 5:

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

Tunnista neljännekset

Christian Neuberger käytti tätä kaavaa saadakseen työntekijän nimen, täytetyn ja sitten suodatetun sarakkeen 1 sisällyttämään vain Q1, Q2, Q3 tai Q4. Oz Du Soleil käytti myös tätä menetelmää.

Suodatettu sarake

Excelin MVP Ken Puls todennäköisesti voittaa kaavallaan. Se haluaa alaviivan tietää, onko tämä työntekijän nimi.

Katso Kenin täydellinen ratkaisu Excel MVPs Attack the Data Cleansing Problem in Power Query -sovelluksessa.

Etsitään alaviivaa

Palaa Podcast 2316 -haasteen pääsivulle.

Lue sarjan seuraava artikkeli: Power Query: Useiden identtisten otsikkojen käsittely.

Mielenkiintoisia artikkeleita...