复杂的事情简单做:用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为好友,拉你入群
(0)

相关推荐

  • PQ-M及函数:文本中间取部分字符(Text.Range)函数的问题

    小勤:大海,为什么我参考你的文章<几个最常用的文本函数的基本用法>,用Text.Range函数出错了?我这样写的: 结果里面一堆错误: 大海:你看到错误原因了吗?你要取的内容原文本中不够. ...

  • Excel数据整理,最高效的工具无疑是她!

    数据源:一般从部分网页上复制的内容容易变成一列! ▲ 来源网络(已脱敏) 结果表:整理成标准的表 处理方案 这里首先推荐使用Power Query处理,具体带大家一起来看一下! 步骤01:加载数据到P ...

  • 来个Power Query小题练练思路!

    需求:把数据展开,并从小到大排序! "-"表示数据数据区间,比如20-30,表示20到30 这11个数字! 第一步:按照逗号分割 在Excel工作表函数中没有文本分割函数,处理文本 ...

  • 曾经我以为透视表是无敌的,直到我遇到了...

    与 30万 读者一起学Excel 透视表统计数据,简直就是无敌的存在.可惜啊,遇到VIP学员的问题,却派不上用场.要按职级.项目统计姓名. 透视表的强项是处理数据,对于处理文本简直束手无策,姓名拉到值 ...

  • 按分隔符拆分,这个方法真的太爽了!

    Excel的核心是数据处理,更多倾向数值方面的处理,相对于文本的处理和清洗比较吃力,但是PQ的定位则是全面的数据清洗,专门有文本处理类函数,可以说在Excel中的各种文本难题,在PQ中都可以非常轻松来 ...

  • PowerBI Desktop中新建表的使用场景

    通常情况下,在PowerBI进行分析的各种数据表都是从外部的各种数据源导入进来的,但并不总是如此,某些情况下在PowerBI Desktop中也可以根据需要直接建立各种表格. 在进行数据分析的过程中, ...

  • PQ 第三期 | M函数基础及上下文详解

    这是我们PQ第三期,讲完本期,基础基本就毕业了,后面可能会对一下难点函数讲解! M函数中由于没有单元格概念,我们第二期所讲,基本是"列操作",整理公式完全一样,那么为什么出来的结果 ...

  • 简易进销存,几秒搞定,不会写函数也可以!

     效果图 详细教程 1.插入表格 将购进和销售表都插入成表格,分别对应修改名称为:购进和销售 2.数据加载到Power Query 编辑器中 > 点击销售表,点击数据-表格,加载到PQ中 > ...

  • 70+篇PQ/PP/PBI文章视频,除了链接,竟然还有内容要点!

    最近一直在尝试对以往所写文章或所录视频内容进行梳理,考虑到大家在查找文章时可能存在的麻烦,于是将文章或视频的内容要点进行较全面的罗列.目前已完成以下70+篇文章(部分视频)的整理,后续继续努力,争取把 ...

  • PQ:又双叒叕粗错了!什么叫“枚举中用于完成操作的元素过多”?

    小勤:这是什么鬼啊?什么叫"枚举中用于完成操作的元素过多"? 大海:你透视的值列有多个值吧?比如同一个"生产中心"里有多个人. 小勤:嗯,的确是呢.源数据是这样 ...

  • PQ高阶技能:M函数

    前面我们学习PQ的时候都是用鼠标操作,虽然通过这些操作能完成大部分的数据处理,但是毕竟还有些复杂的工作是处理不了的,如果想彻底驾驭PQ,必须得掌握点高级玩法.就像学习Excel一样,做个表格我们只要会 ...

  • 先分解后合体!一个看上去超复杂的公式是怎么炼成的!

    最近遇到个从系统中导出的报表,将不同时间段的天成本分别作了汇总,即多个时间段,对应多个天成本,如下图所示: 其中多个时间段用逗号分隔,每一个时间段斜杠分割起止,而天成本用斜杠分割. 为了便于后其他的分 ...

  • PQ-M及函数:对比Excel,一次搞定5个最常用的文本函数

    小勤:大海,最常用的文本类处理函数给我讲讲呗. 大海:好的,在PowerQuery里,文本类函数可能用得比数值计算函数还要多.这里我们通过和Excel里的常用文本处理函数进行对比的方式来学,可能会效果 ...

  • PQ-M及函数:文本修整(Trim)函数与Excel中的差别

    小勤:大海,看了你<几个最常用的文本函数的基本用法>文章,然后用Text.Trim函数处理数据的时候,怎么感觉和Excel里的TRIM函数有点差别?但具体差别在哪里又好像说不清楚.难到是显 ...

  • PQ实战 | 使用Excel收集全国天气历史数据

    搞数据分析的经常要数据的获取头疼,尤其是我们Excel用户,不过现在使用PQ来处理是非常简单的,今天我们就通过收集全国历史天气数据来讲解一下! (案例文件下载:见文末) 我们要获取数据的网址:http ...

  • PQ实战 | 文本中提取数值并求和

    Power Query(以下简称PQ)为了数据清洗提供了大量的函数,基本可以处理日常的各种"脏"数据! 今天我们就来解答一位网友的问题,那就是如何提取一段文本中的数值,并求和,在P ...

  • PQ-M及函数:模拟Excel中的Trim函数

    小勤:PQ里的Text.Trim函数不能像Excel里的一样(具体见文章<文本修整(Trim)函数与Excel中的差别>),将文本中间的连续空格清理成一个,那怎么办好? 大海:只能用其他函 ...

  • PQ-文本拆分的同时转换为数值

    小勤:按字符分列文本时会自动插入"更改类型"的步骤将数字进行转换: 但是,如果我想用Text.Split函数拆分的话,怎么能直接转换为数字呢?大海:Text.Split函数返回的结 ...

  • PQ-M及函数:将Excel的列标转成数字

    小勤:在<单个格式表转换>里提到可以用配置映射表的方式来实现表格数据的提取,比如你以前用VBA程序导数据的那个: 但要在PQ里根据源表内容的位置提取数据的话,得首先知道Excel里表示的位 ...

  • 多Excel文件数据汇总,列名大小写不一致咋办!!!

    小勤:最近收到一份数据,需要对多个Excel工作簿的内容进行汇总,真是麻烦! 大海:多个Excel工作簿内容汇总用Power Query不是很简单的事情吗?前面我不仅推送了大量文章<用PQ自动汇 ...

  • PQ实战 | 这种类似VLOOKUP的查找为什么不对?

    今天是一期网友的问题答疑!主要是数据源不规范到底的简单问题复杂化! 提供两种解法,一种是Power Query主题解法,然后补充一种工作表函数解法 需求说明: 1.查找内容,可能有多个,每个都要到数据 ...