在 Power Query 中使用文本字符串查找所有代码组合

Find all code combinations using text string in Power Query

我需要的是使用文本字符串(A2 中的长文本字符串)从代码 (table 1) 中找到所有代码组合,并获得结果 table 中的所有组合(table 2)。例如,您有字符串的 CE1 部分,它可能有许多组合,如您在结果中看到的...

我在 Power Query 中尝试过,但我不知道如何在行级别上查找具有逗号值(如 CE1、CE2、CE3、CE4 或其他)的行。在我的例子中,它只能匹配一个和第一个值,但不能匹配整个字符串。

我想在 Power Query 中找到解决方案(如果可能的话)!

这是公式解:

=UNIQUE(FILTER(Table3[Ausgang];LET(X;TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A2;",";"_");"_";"</s><s>")&"</s></t>";"//s"));MMULT(IFERROR(FIND(","&X&",";","&Table3[Ausgang]&",");0);SEQUENCE(COUNTA(X);;;0)));"None Found"))

https://docs.google.com/spreadsheets/d/1bg7aodiJb-A1hOBUlBxc-25ERn2Pn5bY/edit?usp=sharing&ouid=101738555398870704584&rtpof=true&sd=true

在 powerquery 中,将查找单元格加载到名为 Table3 的查询中(数据..来自 table/range [x]columns),然后关闭文件并加载。假设列名为 String

加载您的 T1 table(数据 .. 来自 table/range [x] 列)并添加列 .. 自定义列 ... 使用公式

=List.ContainsAny(Text.Split([Codes],","),Text.Split(Table.ReplaceValue(Table3,",","_",Replacer.ReplaceText,{"String"})[String]{0},"_"))

然后使用列顶部的箭头筛选为 TRUE 并右键单击以删除多余的列

示例完整代码,将其更好地拆分如下。假设其他查询名为 Table3,列为 String。将 T_1 替换为 powerquery 为您的 table

提供的名称
let Source = Excel.CurrentWorkbook(){[Name="T_1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Codes", type text}}),
FindList = Text.Split(Table.ReplaceValue(Table3,",","_",Replacer.ReplaceText,{"String"})[String]{0},"_"),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each List.ContainsAny(Text.Split([Codes],","),FindList)),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = true)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})
in  #"Removed Columns"

诀窍是 (a) 将源单元格中的 , 替换为 _ 然后 Text.Split 生成一个列表 (b) 对第二个 table 中的每一行执行相同操作,并且使用 List.ContainsAny 查找匹配项