具有至少3种特定产品的过滤器公司

时间:2018-12-20 15:43:17

标签: excel pivot-table powerbi etl powerquery

我有一个Excel数据透视表(以及后面的表数据集),其结构类似于下面的结构。如何仅过滤/显示带有产品(Col B)1 AND 2 AND 3的公司(Col A)?听起来很简单,但找不到解决方法。通过使用Power Query(在Power BI或Excel中可用)实现这一点没问题。

A1: Company 1 | B1: Product 1
A2: Company 1 | B2: Product 2
A3: Company 1 | B3: Product 3
A4: Company 1 | B4: Product 4
A5: Company 2 | B5: Product 1
A6: Company 3 | B6: Product 1
A7: Company 4 | B7: Product 1
A8: Company 4 | B8: Product 2
A9: Company 4 | B9: Product 3
A10: Company 4 | B9: Product 4
A11: Company 4 | B9: Product 5

2 个答案:

答案 0 :(得分:1)

这是使用Power Query的一种方法。

首先,将其从Excel中的表引入Power Query:

enter image description here

然后我按公司分组(“转换”>“分组依据”):

enter image description here

enter image description here

然后,我添加一个新的自定义列(添加列>自定义列)以标记每个公司是否在其关联的分组表的“产品”列中包含3种产品:

enter image description here

enter image description here

然后我从新的自定义列中过滤掉FALSE条目(使用“自定义”列右上方的按钮):

enter image description here

然后,从“ AllData”列的嵌入式表中展开“产品”列(使用“ AllData”列右上方的按钮)。

enter image description here

enter image description here

然后我删除“自定义”列:

enter image description here

这是M代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Company", type text}, {"Product", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Company"}, {{"AllData", each _, type table}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each List.ContainsAll([AllData][Product], {"Product 1","Product 2","Product 3"})),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = true)),
#"Expanded AllData" = Table.ExpandTableColumn(#"Filtered Rows", "AllData", {"Product"}, {"Product"}),
#"Removed Columns" = Table.RemoveColumns(#"Expanded AllData",{"Custom"})
in
#"Removed Columns"

答案 1 :(得分:1)

基本上,您需要做一些事情才能完全在Excel中做到这一点:

  1. 添加一个列出产品的新表,并在其中显示该产品是否包含/标记的列:

enter image description here

  1. 将公司/产品表更新为具有 2 个帮助器列:到VLOOKUP中是否标记了产品,一个来指示公司是否具有所有3个标记的产品:
    • 第一助手列将使用=VLOOKUP([@Product],tProducts,2,FALSE)之类的公式。
    • 第二个帮助器列将使用=COUNTIFS([Company],[@Company],[Product Flagged],TRUE)>=3之类的公式。

enter image description here

在D列中带有TRUE的行分别具有1个产品,2个和3个产品(除非您的行具有重复的公司/产品组合,否则行将更加棘手):

在数据透视表中,您可以按以下帮助列进行过滤:

enter image description here