Power Query: Birden Çok Özdeş Başlıkla Başa Çıkma - 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.

Orijinal veri şekillendirme problemimde, sürecin çok başında bir sorunla karşılaştım. Gelen veriler, Q1 başlıklı birçok sütuna sahip olacaktı.

Birçok sütun

Çözümümde, "UglyData" adlı bir aralık oluşturdum ve bunu Power Query'ye aktardım. Bu, Power Query'nin sütunlarımı Q1_1 olarak yeniden adlandırmasının mutsuz sonucuna yol açar.

Yeniden adlandırılmış sütunlar

Daha sonra, özetlemeden sonra, bu başlıklardan sadece soldaki iki karakteri çıkarmak zorunda kaldım.

Bu soruna üç ayrı çözüm vardı:

  • Wyn Hopkins ve Demote Başlıkları
  • MF Wong ve My Table Has Headers seçeneğinin işaretini kaldırın (Peter Bartholomew tarafından da önerilmektedir)
  • Jason M ve sadece Yükseltilmiş Başlıkları silin (ayrıca Ondřej Malinský ve Excel MVP John MacDougall tarafından önerilmektedir)

İlk yenilik, Access Analytic'teki Wyn Hopkins'ten geldi. Wyn, adlandırılmış bir aralık yerine verileri Ctrl + T kullanarak bir tabloya dönüştürdü. Bu noktada, Excel başlıkları şu şekilde dönüştürdüğü için başlıklara zarar verildi:

Tabloya dönüştürüldü: Ctrl + T

Wyn, verileri Power Query'ye aldıktan sonra, İlk Satırı Başlıklar Olarak Kullan açılır menüsünü açtı ve Başlıkları İlk Satır olarak Kullan'ı seçti. Bunun orada olduğunu hiç fark etmemiştim. Table.DemoteHeaders adlı bir adım oluşturur.

Başlıkları ilk satır olarak kullanın

Ancak Wyn'in gelişmesine rağmen, daha sonra bu başlıklardan ilk 2 karakteri çıkarması gerekecekti.

İkinci yenilik, MF Wong'un tekniğidir. Tabloyu yarattığında, Tablomun Başlıkları Var!

Masamın başlıkları var

Bu, Excel'in birden çok Q1 başlığını tek başına bıraktığından ve daha sonra fazladan son ekin çıkarılmasına gerek olmadığından emin olur.

Birden çok Q1 başlığı

"Sofraları seviyorum" kampında insanlar olduğunu anlıyorum. MF Wong'un videosu, verinin sağına yeni çalışanları nasıl ekleyebileceğini gösterdi ve tablo otomatik olarak genişledi. Tablo kullanmak için pek çok iyi neden var.

Ancak Alt Toplamları, Özel Görünümleri ve Seçime Göre Filtrelemeyi sevdiğim için Tabloları kullanmıyorum. Bu yüzden, Jason M.'nin çözümünü takdir ediyorum. Verileri UglyData'nın adlandırılmış aralığı olarak tuttu. Verileri Power Query'ye aktarır aktarmaz şu iki adımı sildi:

Silinen adımlar

Şimdi, sadece 1. Sıradaki verilerle, Q1 adı verilen çok sayıda sütuna sahip olmanın zorlukları yoktur.

Birçok Q1 sütunu

Wyn Hopkin'in DemotedHeaders kodunu gösteren kodu:

let Source = Excel.CurrentWorkbook()((Name="Table1"))(Content), #"Demoted Headers1" = Table.DemoteHeaders(Source), #"Transposed Table1" = Table.Transpose(#"Demoted Headers1"), #"Added Custom" = Table.AddColumn(#"Transposed Table1", "Custom", each if Text.Start((Column1),1) = "Q" then null else (Column1)), #"Filled Down" = Table.FillDown(#"Added Custom",("Custom")), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each ((Custom) "Dept. Total")), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each not Text.StartsWith((Column1), "Employee")), #"Promoted Headers" = Table.PromoteHeaders(#"Filtered Rows1", (PromoteAllScalars=true)), #"Extracted First Characters" = Table.TransformColumns(#"Promoted Headers", (("Category Description", each Text.Start(_, 2), type text))), #"Reordered Columns" = Table.ReorderColumns(#"Extracted First Characters",("Category Description_1", "Category Description", "Administrative", "Holiday", "PTO/LOA/Jury Duty", "Project A", "Project B", "Project C")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", ("Category Description_1", "Category Description"), "Attribute", "Value"), #"Reordered Columns1" = Table.ReorderColumns(#"Unpivoted Other Columns",("Category Description_1", "Attribute", "Category Description", "Value")), #"Pivoted Column" = Table.Pivot(#"Reordered Columns1", List.Distinct(#"Reordered Columns1"(#"Category Description")), "Category Description", "Value", List.Sum), #"Reordered Columns2" = Table.ReorderColumns(#"Pivoted Column",("Attribute", "Category Description_1", "Q1", "Q2", "Q3", "Q4")), #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns2",(("Attribute", "Cat Deasc"), ("Category Description_1", "Emp Name"))), #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",(("Emp Name", type text), ("Q1", Int64.Type), ("Q2", Int64.Type), ("Q3", Int64.Type), ("Q4", Int64.Type))), #"Inserted Sum" = Table.AddColumn(#"Changed Type", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), Int64.Type) in #"Inserted Sum"

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

Bu dizideki sonraki makaleyi okuyun: Power Query: Bunu silinsin mi, silinsin mi yoksa hiçbir şey silmek mi?

Ilginç makaleler...