Power Query: Menggunakan Klausul Lain Jika di Kolom Bersyarat - Tips Excel

Daftar Isi

Catatan

Ini adalah salah satu dari rangkaian artikel yang merinci solusi yang dikirim untuk tantangan Podcast 2316.

Dalam solusi saya untuk membentuk ulang data, saya menginginkan cara untuk melihat apakah kolom berisi nama karyawan atau nilai seperti Q1, Q2, Q3, Q4. Dalam solusi saya, saya berasumsi bahwa tidak ada yang akan memiliki nama dengan 2 karakter, jadi saya menambahkan kolom untuk menghitung panjang teks di kolom tersebut.

Jason M menghindari kebutuhan untuk kolom Panjang dengan menambahkan tiga klausa Else If ke Kolom Bersyaratnya.

Tambahkan kolom bersyarat

Perhitungan bersyarat untuk Karyawan kemudian mencari Quarter menjadi Null: if (Quarter) = null lalu (Category Description) else null.

Perhitungan bersyarat

Berikut adalah kode M Jason:

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ý mengirimkan solusi yang menggunakan beberapa klausa Else If juga:

Beberapa else-if

Matthew Wykle mengirimkan solusi dengan cara lain untuk mengidentifikasi perempat. Metodenya memeriksa bahwa teks dimulai dengan Q dan digit kedua kurang dari 5:

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

Identifikasi tempat

Christian Neuberger menggunakan rumus ini untuk mendapatkan Nama Karyawan, Diisi Ke Bawah, dan kemudian Menyaring kolom 1 untuk menyertakan hanya Q1, Q2, Q3, atau Q4. Oz Du Soleil juga menggunakan metode ini.

Kolom yang difilter

MVP Excel Ken Puls mungkin menang dengan rumusnya. Ini mencari garis bawah untuk mengetahui apakah ini bukan nama karyawan.

Lihat solusi lengkap Ken di Excel MVP Menyerang Masalah Pembersihan Data di Power Query.

Mencari garis bawah

Kembali ke halaman utama untuk tantangan Podcast 2316.

Baca artikel berikutnya dalam seri ini: Power Query: Menangani Beberapa Header Identik.

Artikel yang menarik...