Power Query: Koşullu Sütunlarda Eğer Diğer Tümcümleleri Kullanma - Excel İpuçları

İçindekiler

Not

Bu, Podcast 2316 yarışması için gönderilen çözümleri ayrıntılarıyla anlatan bir dizi makaleden biridir.

Verileri yeniden şekillendirme çözümümde, bir sütunun bir çalışan adı veya Q1, Q2, Q3, Q4 gibi bir değer içerip içermediğini görmenin bir yolunu istedim. Çözümümde, hiç kimsenin 2 karakterli bir isme sahip olmayacağını varsaydım ve bu yüzden sütundaki metnin uzunluğunu hesaplamak için bir sütun ekledim.

Jason M, Koşullu Sütununa üç Else If cümlesi ekleyerek Uzunluk sütununa olan ihtiyacı ortadan kaldırdı.

Koşullu sütun ekle

Çalışan için koşullu hesaplama daha sonra Çeyreğin Null olmasını arar: if (Çeyrek) = null ise (Kategori Açıklaması) else null.

Koşullu hesaplama

İşte Jason'ın M kodu:

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ý, birden fazla Else If cümlesi kullanan bir çözüm gönderdi:

Birden çok değilse-if

Matthew Wykle, mahalleleri tanımlamanın başka bir yolunu içeren bir çözüm yolladı. Metodu hem metnin Q ile başladığını hem de ikinci rakamın 5'ten küçük olduğunu kontrol eder:

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

Çeyrekleri tanımlayın

Christian Neuberger bu formülü kullanarak Çalışan Adı, Doldurulmuş ve ardından Filtrelenmiş sütun 1'i yalnızca S1, Q2, Q3 veya Q4'ü içerecek şekilde aldı. Öz Du Soleil de bu yöntemi kullandı.

Filtrelenmiş sütun

Excel MVP Ken Puls muhtemelen formülüyle kazanır. Bunun çalışan adı olup olmadığını anlamak için bir alt çizgi arar.

Ken'in Excel MVP'lerinde Power Query'de Veri Temizleme Sorununa Saldırı'daki tam çözümünü görün.

Alt çizgi aranıyor

Podcast 2316 yarışması için ana sayfaya dönün.

Bu dizideki sonraki makaleyi okuyun: Power Query: Birden Çok Özdeş Başlıkla Başa Çıkma.

Ilginç makaleler...