Power Query: Kayıt Gruplarını art arda 1'den 5'e kadar sayı - 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.

Power Query Challenge'ımda adımlardan biri, her 5. kayıttan ad alanını alıp beş kayda kopyalamaktı. Benim orijinal çözümüm, adın uzunluğunun 2 karakterden daha uzun olacağı gerçeğine güvenerek hantaldı.

MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil, Jamie Rogers dahil olmak üzere birçok kişi, bir Dizin sütunu içeren çok daha iyi bir çözüm kullandı.

Verinin şöyle göründüğü süreci ele alalım:

Veri tablosu

İlk olarak, MF Wong ilk beş kayda ihtiyacınız olmadığını belirtti. Kullanabilirsin

Home, Remove Rows, Remove Top Rows… , 5 Rows.

En üst sıraları kaldır

Excel on Fire'dan Excel MVP Oz du Soleil de bu beşinden kurtuldu, ancak hala sütun halindeyken yaptı.

Ardından, Sütun Ekle, Dizin Sütunu Ekle, 0'dan. Bu, 0'dan NN'ye kadar yeni bir sütun oluşturur.

Dizin sütunu

Yeni Dizin sütunu seçiliyken, Dönüştür sekmesine gidin ve Sayı Sekmesi grubundan Standart açılır menüsünü seçin. Dikkatli olun: Sütun Ekle sekmesinde benzer bir açılır menü vardır, ancak Dönüştür sekmesindekini seçmek fazladan bir sütun eklemeyi engeller. Bu açılır menüden Modulo'yu seçin ve ardından 5'e böldükten sonra kalanı istediğinizi belirtin.

Modülo

Sonra

Modül

Bu, 0'dan 4'e kadar tekrar tekrar tekrarlanan bir dizi sayı üretir.

Sonuç

Buradan, çalışan adlarını getirme adımları orijinal videoma benzer.

Adı veya Null değerini getiren ve ardından Aşağı Dolduran bir koşullu sütun ekleyin. Bu sütunu hesaplamanın daha fazla yolu Power Query: Koşullu Sütunlarda Başka Eğer İfadeleri Kullanma bölümünde bulunabilir.

Koşullu sütun ekle

Adı ilk satırdan sonraki beş satıra kadar doldurmak için Aşağı Doldurun.

MF Wong'a videosu için teşekkürler. İngilizce altyazılar için CC'yi açtığınızdan emin olun.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Peter Bartholomew'in videosu:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen ayrıca toplamları silmeye ve daha sonra tekrar eklemeye gerek olmadığını fark etti. M kodu:

let Quelle = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Höher gestufte Header" = Table.PromoteHeaders(Quelle, (PromoteAllScalars=true)), #"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",(("Category Description", type text), ("Dept. Total", type number), ("Q1", type number), ("Q2", type number), ("Q3", type number), ("Q4", Int64.Type), ("Employee 1", type number), ("Q1_1", type number), ("Q2_2", type number), ("Q3_3", Int64.Type), ("Q4_4", Int64.Type), ("Employee 2", Int64.Type), ("Q1_5", Int64.Type), ("Q2_6", Int64.Type), ("Q3_7", Int64.Type), ("Q4_8", Int64.Type), ("Employee 3", Int64.Type), ("Q1_9", Int64.Type), ("Q2_10", Int64.Type), ("Q3_11", Int64.Type), ("Q4_12", Int64.Type), ("Employee 4", type number), ("Q1_13", type number), ("Q2_14", type number), ("Q3_15", type number), ("Q4_16", Int64.Type))), #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", ("Category Description"), "Attribut", "Wert"), #"Hinzugefügter Index" = Table.AddIndexColumn(#"Entpivotierte andere Spalten", "Index", 1, 1), #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Hinzugefügter Index", "Benutzerdefiniert", each Number.Mod((Index)-1,5)), #"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert.1", each if (Benutzerdefiniert)=0 then (Attribut) else null), #"Nach unten gefüllt" = Table.FillDown(#"Hinzugefügte benutzerdefinierte Spalte1",("Benutzerdefiniert.1")), #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Nach unten gefüllt",("Benutzerdefiniert.1", "Attribut", "Category Description", "Wert", "Index", "Benutzerdefiniert")), #"Geänderter Typ1" = Table.TransformColumnTypes(#"Neu angeordnete Spalten",(("Benutzerdefiniert", type text))), #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(#"Geänderter Typ1", "Benutzerdefiniert.2", each if (Benutzerdefiniert) = "0" then "TOTAL" else "Q"&(Benutzerdefiniert)), #"Neu angeordnete Spalten1" = Table.ReorderColumns(#"Hinzugefügte benutzerdefinierte Spalte2",("Attribut", "Category Description", "Benutzerdefiniert.1", "Wert", "Index", "Benutzerdefiniert", "Benutzerdefiniert.2")), #"Entfernte Spalten" = Table.RemoveColumns(#"Neu angeordnete Spalten1",("Attribut", "Index", "Benutzerdefiniert")), #"Pivotierte Spalte" = Table.Pivot(#"Entfernte Spalten", List.Distinct(#"Entfernte Spalten"(Benutzerdefiniert.2)), "Benutzerdefiniert.2", "Wert", List.Sum), #"Neu angeordnete Spalten2" = Table.ReorderColumns(#"Pivotierte Spalte",("Benutzerdefiniert.1", "Category Description", "Q1", "Q2", "Q3", "Q4", "TOTAL")), #"Sortierte Zeilen" = Table.Sort(#"Neu angeordnete Spalten2",(("Benutzerdefiniert.1", Order.Ascending))), #"Umbenannte Spalten" = Table.RenameColumns(#"Sortierte Zeilen",(("Benutzerdefiniert.1", "Employee Name"))) in #"Umbenannte Spalten"

Josh Johnson'ın da bir Dizin sütunu kullandığını, ancak ilk adımlardan biri olduğunu ve bunu son adımlardan birinde sıralama olarak kullandığını unutmayın.

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

Bu dizideki sonraki makaleyi okuyun: Power Query: Bir Sütundan Soldaki 2 Karakteri Ayıklama.

Ilginç makaleler...