Power Query: Sử dụng điều khoản khác If trong cột có điều kiện - Mẹo Excel

Mục lục

Ghi chú

Đây là một trong loạt bài viết chi tiết các giải pháp được gửi đến cho thử thách Podcast 2316.

Trong giải pháp định hình lại dữ liệu của tôi, tôi muốn có một cách để xem liệu một cột có chứa tên nhân viên hoặc một giá trị như Q1, Q2, Q3, Q4 hay không. Trong giải pháp của tôi, tôi giả định rằng không ai có tên có 2 ký tự và vì vậy tôi đã thêm một cột để tính độ dài của văn bản trong cột.

Jason M đã tránh sự cần thiết của cột Độ dài bằng cách thêm ba mệnh đề Khác Nếu vào Cột có Điều kiện của mình.

Thêm cột điều kiện

Phép tính có điều kiện cho Nhân viên sau đó tìm kiếm Quý là Null: if (Quý) = null sau đó (Mô tả danh mục) else null.

Tính toán có điều kiện

Đây là mã M của 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ý đã gửi trong một giải pháp sử dụng nhiều mệnh đề Else If:

Nhiều khác-nếu

Matthew Wykle đã gửi đến một giải pháp với một cách khác để xác định các khu vực. Phương pháp của anh ta kiểm tra cả văn bản bắt đầu bằng Q và chữ số thứ hai nhỏ hơn 5:

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

Xác định quý

Christian Neuberger đã sử dụng công thức này để lấy Tên nhân viên, được điền xuống, sau đó cột được lọc 1 để chỉ bao gồm Q1, Q2, Q3 hoặc Q4. Oz Du Soleil cũng đã sử dụng phương pháp này.

Cột đã lọc

Excel MVP Ken Puls có thể thắng với công thức của mình. Nó tìm kiếm một dấu gạch dưới để biết nếu đây không phải là tên nhân viên.

Xem giải pháp đầy đủ của Ken tại Excel MVPs Tấn công Vấn đề Làm sạch Dữ liệu trong Power Query.

Tìm kiếm dấu gạch dưới

Quay lại trang chính cho thử thách Podcast 2316.

Đọc bài viết tiếp theo trong loạt bài này: Truy vấn nguồn: Xử lý nhiều tiêu đề giống hệt nhau.

thú vị bài viết...