打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
复杂的事情简单做:用PQ实现是否包含某文本的匹配查询

👍

近期推送的文章

·  正  ·  文  ·  来  ·  啦  ·

在日常工作中,常常会遇到一个问题,根据不同的条件判断单元格中的信息是否匹配。根据实际情况的不同,解决思路也各不相同。

例如在第1表张中,注明了不同商品的质量等级。现在将商品随机组合起来,形成一个礼品包。

如果这个包中有“良”等级的商品,那么这就是“二等包”,反之礼品包中全部为“优”等级的商品,这就是个“一等包”。

这个问题如果通过Power Query的M函数来解决,则函数比较容易写,而且不会太复杂。

在Power Query中解决这个问题的思路如下图,重点在于第二步,如何通过M函数判断礼品中包中否包含有质量等级为“良”的商品。

第1步:上载商品表

将包含商品质量等级信息的表上载到Power Query中。

第2步:筛选数据

修改表格名称为“商品信息”,并将质量等级为“良”的商品筛选出来。

第3步:以链接的形式上载表

此时对商品信息表进行上载,因为这张表的作用是信息查询,所以只要保留链接方面后面的查询就行。

第4步:上载第二张表

将需要判断等级的礼品包表格上载到PQ中。这里之所以没有上载“礼品等级”列,是因为后面用函数生成列即可,所以不需要这一列。

第5步:添加列

在上载的第二张表格中添加“自定义列”。

因为前面步骤中已经对“商品信息”表进行了筛选,所以在自定义列中,只需要写入M函数判断“礼品包”列中,是否包含“商品信息”表中的商品,如果有则返回“二等包”结果,反之则返回“一等包”结果

为了方便大家理解函数,下面将函数拆开进行演示。

第6步:判断“礼品包”是否包含“商品信息”表中的商品

输入函数:List.Transform(商品信息[商品],(x)=>Text.Contains([礼品包],x))

函数的详细解释:

1、List.Transform函数

作用:根据list列表返回新的列表。

语法:List.Transform(list as list,transform as function)

语法解释:List.Transform(要参照的list列表,返回方式)

2、(x)

这是一个匿名函数,用来存list列表的值。

3、=>符号

该符号表示处理方式,即用什么方式返回列表的值。

4、Text.Contains

作用:检测返回文本中否包含子字符串。

语法:Text Contains(text as nullable text,subsring as text)

语法解释:Text.Contains(文本,子字符串)

因此,该函数的逻辑如下图所示。

这一步的运算结果中,每一个礼品包都生成了新的list,而list的数量和之前的商品信息表数量是相对应的。

也就是说商品信息表中,有5件商品质量等级为“良”。那么函数依次判断礼品包中的文本,是否包含了这5件商品的名称,因此将生成5条TRUE或FALSE的判断结果。

第7步:完善函数判断等级

上面第6步已经解决最核心的判断了,接下来只需要完善函数,将判断结果以理想的结果呈现即可。

完整的函数为:

=if List.AnyTrue(List.Transform(商品信息[商品],(x)=>Text.Contains([礼品包],x)))

then"二等包"

else"一等包"

if函数和Any Ture用来判断,生成的list列表中是否包含“TRUE”值,有这个值则表示礼品包中有“良”的商品,那么返回的结果为“二等包”。

如果没有包含“TRUE”值,说明礼品包中没有“良”的商品,返回的结果为“一等包”。

第8步:上载结果

将生成的结果上载到Excel中就可以了。

欢迎加入Excel偷懒的技术读者微信群,学习更多Excel技巧。
微信加toulanxzs为好友,拉你入群
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一个案例说明为什么建议你先学PQ基操后学函数公式
按分隔符拆分,这个方法真的太爽了!
70+篇PQ/PP/PBI文章视频,除了链接,竟然还有内容要点!
啊?透视表居然无法实现合并文字,太可惜了!见识这个强大的新技能取代透视表
Excel表间数据核对你还在傻傻用函数吗?用PQ功能,简单快速!
用M函数求文本中所有数字的和
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服