如何循环多列执行Text.Contains,无需编写17条if条件语句?
解决方案(Power Query M语言)
不用写17条重复的if语句,直接通过遍历当前行的所有列值来筛选包含"SSD"的数据,具体实现方式如下:
1. 提取所有包含"SSD"的列值(返回列表)
添加自定义列时使用以下代码,会把当前行所有含"SSD"的内容放到一个列表里:
each List.Select(Record.ToList(_), (x) => Text.Contains(x, "SSD"))
Record.ToList(_):把当前行的所有列值转换成一个列表List.Select(..., (x) => Text.Contains(x, "SSD")):筛选列表中包含"SSD"的元素
2. 提取第一个包含"SSD"的列值(返回单个值)
如果只需要第一个匹配的结果,用List.First取列表的第一个元素,没有匹配项时返回null:
each List.First(List.Select(Record.ToList(_), (x) => Text.Contains(x, "SSD")), null)
3. 将所有匹配结果合并为字符串
如果想把多个匹配结果合并成一个逗号分隔的字符串,加上Text.Combine:
each Text.Combine(List.Select(Record.ToList(_), (x) => Text.Contains(x, "SSD")), ", ")
内容的提问来源于stack exchange,提问作者Asscha197
相关产品推荐
相关产品推荐

