Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >三种方法实现跨表VLOOKUP,轻松搞定多重匹配取数!

三种方法实现跨表VLOOKUP,轻松搞定多重匹配取数!

作者头像
大海Power
发布于 2021-08-31 08:00:29
发布于 2021-08-31 08:00:29
29.3K00
代码可运行
举报
运行总次数:0
代码可运行

- 1 -

首先,说一下为什么不用合并查询。

这其实源于一个实际的工作问题,简化后的情况如下:先按合同号匹配数量,如果合同号没有匹配到,再按计划号匹配。即多重匹配取数:

这个问题当然也可以通过多次合并查询来解决,比如先按合同号合并查询,再按计划号合并查询,然后再写个判断:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
= if [合同]<>null and Table.RowCount([合同合并])>0
then [合同合并]{0}[]
else if [计划]<>null and Table.RowCount([计划合并])>0
     then [计划合并]{0}[]
     else null

- 2 -

估计有些朋友会被上面的判断语句给绕晕,因为的确写起来比较麻烦!那么,是否有像在Excel里写IFERROR+VLOOKUP类似的方法呢?

当然是有的,但也是通过M语言(函数)的方式来实现,那么问题来了,M里虽然有类似IFERROR的简单关键词:try ... otherwise ...,但并没有一个跟VLOOKUP一样的函数哦!怎么办?我们先用下面这个最简单的例子来看看:

1、表筛选法

表筛选法其实最容易理解,即用Table.SelectRows函数,从表里筛选出符合条件的数据,然后按需要取其中的1条(如第1条)即可:

但这里面其实有一点儿不好的地方,即当匹配不到内容的时候,得到的结果是错误:

虽然,Excel里用VLOOKUP的结果也是错误,虽然,即使得到错误上传到Excel中也会显示为空,但是,我们其实还是可以再改进一点点儿,让它直接显示为空:

即,不要用“表[列]{0}”的方式去取值,改用List.First函数去取值。

2、跳位法

跳位法即使用函数Table.Skip,跳过不符合条件的数据,直接到达符合条件的数据,然后进行提取。如下图所示:

同样的,因为结果是表,所以也可以通过List.Fisrt函数来避免错误结果的出现。

跳位法跟筛选法的差别在于,筛选法会对整表各行进行判断,然后返回满足所有条件的行,而跳位法只需要对表的前面部分行进行判断,直到找到对应的行即返回剩余表的所有内容。

理论上来说,跳位法可能会比筛选法的效率高一点儿——当然,跳位法返回表的内容比筛选法返回的要多,所以也可能占更大的内存空间,所以,实际效率问题还是应根据实际情况进行试验确定。

3、内容定位法

在以前的文章《重要!很重要!非常重要!理解PQ里的数据结构(四、根据内容定位及筛选行)》里,其实讲过这种方法:

用在模拟VLOOKUP上,这个写法最简单:

但,使用这个写法的时候,一定要注意一个问题,即,如果存在多个符合条件的内容,那将得到错误的结果,具体可参考上面文章。

如果希望能在存在多个符合条件的内容时,仍使用该方法,可以先对匹配所引用的表(如本案例中的V源表)去重,这样就能避免问题的出现,即公式修改如下:

- 3 -

有了上面模拟VLOOKUP写法的基础,要实现文章开始的多次匹配问题,其实就非常简单了,比如,这里因为源数据里没有重复内容的影响,所以,我们可以直接用上面第3种——内容定位法:

关于其他方法,大家可以多动手试试——只有自己动手写过,才更能掌握和理解这些解决问题的思路和方法哦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VLookup等方法在大量多列数据匹配时的效率对比及改善思路
VLookup无疑是Excel中进行数据匹配查询用得最广泛的函数,但是,随着企业数据量的不断增加,分析需求越来越复杂,越来越多的朋友明显感觉到VLookup函数在进行批量性的数据匹配过程中出现的卡顿问题也越来越严重。
大海Power
2021/08/30
5.4K0
手把手教你实操vlookup的7种用法,这个函数别说没用过哦!
今天和大家来说说VLOOKUP的那些事儿,深入了解一下VLOOKUP函数的各种用法,看看这位大众情人还藏着多少不为人知的秘密。
1480
2020/03/24
2.5K0
手把手教你实操vlookup的7种用法,这个函数别说没用过哦!
大数据ETL开发之图解Kettle工具(入门到精通)
ETL (Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种ETL工具的使用,必不可少。
全栈程序员站长
2022/07/01
20.4K0
大数据ETL开发之图解Kettle工具(入门到精通)
需要多次VLOOKUP的问题,在Power Query里原来这么简单! | PQ实战
这是一个很常见的问题:要读取的数据需要通过多次vlookup取得,比如下面简化的滚动效益测算问题,先按合同号匹配,如果匹配不到,再按计划号匹配,在Excel里使用2次vlookup函数实现,如下图所示:
大海Power
2022/11/07
2.3K0
需要多次VLOOKUP的问题,在Power Query里原来这么简单! | PQ实战
跨查询定位数据:换个方法轻松实现合并查询
大海:可以的,比如有时候只需要匹配另一个表里某一项内容,觉得用合并查询的方式太“重”,那么可以直接通过跨查询引用和定位的方式来实现,比如这个订单明细表和产品表的例子:
大海Power
2021/08/30
5890
只是一个简单的分区间问题?No,我要告诉你更通用的表间数据匹配方法!
小勤:用RELATED或LOOKUPVALUE函数都是精确匹配,但,有时候我想实现分区间的操作,怎么办?类似LOOKUP函数(或VLOOKUP函数的模糊匹配)功能,比如说有价格区间如下图所示:
大海Power
2021/08/30
1.1K0
Excel的匹配函数全应用
今天会和大家分享日常使用频率最高匹配函数用法,谈到匹配函数,首先想到的就是Vlookup,嗯,今天就是要分享Vlookup和他的小伙伴们的应用。 本次长图文信息主要从Vlookup使用常见错误
用户1332619
2018/03/08
3.8K0
Excel的匹配函数全应用
这些年,Excel不知道坑死了多少人,你有幸免吗?
近日一篇名为 Excel界地震 微软宣布 跨4代人34岁的 VLOOKUP 退休 刷爆朋友圈,几小时就像病毒一样传播起来并很快得到了10W+的阅读,太香了。几乎所有和 Excel 有关的公众号都在发与 VLOOKUP 及 XLOOKUP 有关的文章,这还不够说明地震的嘛。一个小小的 VLOOKUP 其实可以洞悉到人们对 Excel 的依赖度之广之深。
BI佐罗
2019/09/23
2.1K0
这些年,Excel不知道坑死了多少人,你有幸免吗?
你可能从来没用透视表干过这事!轻松搞定2020年休假月历!
昨天,发布了文章《你可能从来没用透视表干过这件事,太有意思了!》,其中用透视表实现了月历的显示方式,并且提到,“月历型”报表的问题,众多朋友表示非常期待。
大海Power
2021/08/31
1.2K0
python df 列替换_如何用Python做数据分析,没有比这篇文章更详细的了(图文详情)...
如果你平常做数据分析用 Excel,想要用 Python 做还不太会?那这篇系统的文章一定能帮到你!建议先收藏后食用
用户7886150
2020/12/26
4.5K0
EXCEL必备工具箱17.0免费版
今天逛论坛,无意中发现一个好用的小工具,我试过啦,确实挺不错的,和大家分享一下! 这个是免费版的,不会收费的,只有增强版的才收费
星泽V社
2022/03/02
5.4K0
EXCEL必备工具箱17.0免费版
【收藏】数据分析必会的Excel高频函数合集
提到Excel,估计职场人都不会陌生,毕竟很大一票人都会在简历上写着"熟练使用Excel"。职场必备技能排行榜上,Excel绝对地位显赫。不过有多少人只是把Excel当作简单的数据录入工具和简单统计工具呢?这里不妄加评论。
张俊红
2021/03/04
3.8K0
ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
当数据被插入到表中时,会创建多个数据片段并按主键的字典序排序。例如,主键是(CounterID,Date)时,片段中数据首先按CounterID排序,具有相同CounterID的部分按Date排序。
张飞的猪
2024/03/12
1.4K0
ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析
多种方法爬取猫眼电影并分析(附代码)
摘要: 作为小白,爬虫可以说是入门python最快和最容易获得成就感的途径。因为初级爬虫的套路相对固定,常见的方法只有几种,比较好上手。选取网页结构较为简单的猫眼top100电影为案例进行练习。 重点是用上述所说的4种方法提取出关键内容。一个问题采用不同的解决方法有助于拓展思维,通过不断练习就能够灵活运用。
Python中文社区
2018/12/11
6.3K0
多种方法爬取猫眼电影并分析(附代码)
统计学派的18种经典「数据分析方法」
来源:机器学习算法与Python实战本文约10000字,建议阅读15分钟 本文为你列举了统计学派中18种经典的数据分析法。 Part1 描述统计 描述统计是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间关系进行估计和描述的方法。描述统计分为集中趋势分析和离中趋势分析和相关分析三大部分。 集中趋势分析:集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。例如被试的平均成绩多少?是正偏分布还是负偏分布? 离中趋势分析:离中趋势分析主要靠全距、四分差、平均
数据派THU
2023/03/29
6830
统计学派的18种经典「数据分析方法」
MySQL还能这样玩---第三篇之索引也可以如此easy
左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据。
大忽悠爱学习
2022/05/10
6260
MySQL还能这样玩---第三篇之索引也可以如此easy
Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08
写法和写模型表类极其相似,但是 forms 组件的字段有约束,模型表类的字段没有约束 from django import forms class LoginForm(forms.Form): username = forms.CharField(max_length=8,min_length=3) # 用户名最长八位最短三位 password = forms.CharField(max_length=8,min_length=5) # 密码最长八位最短五位 email = forms.EmailField() # email必须是邮箱格式
suwanbin
2019/09/26
2.9K0
Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
Austindatabases公众号已经开启了,AI 文章分析,AI 文章问答,比如你想知道AustinDatabases 里面,说了多少种数据库,那些是讲 MySQL,那些是PostgreSQL, 那些是OB ,POLARDB ,MongoDB ,SQL Server, 阿里云的,问他他会列出来,同时如果有问题不明白,可以将文章的文字粘贴到公众号提供的专用AI ,公众号将通过众多文章(目前1300多篇)来进行尝试性的解释。使用方法,直接到微信公众号中点击服务,选择AI问答。如下示例
AustinDatabases
2025/03/07
940
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
太秀了!用Excel也能实现和Python数据分析一样的功能!
这是一篇关于如何用excel做数据分析的案例。目的是帮助大家,在遇到小型数据样本时,快速利用excel做分析。所以本篇文章的重点是分析思路+数据处理+可视化的实现,因为数据来源于网络,所以不做深入解析。
杰哥的IT之旅
2021/03/09
2.1K0
MySQL原理简介—11.优化案例介绍
某互联网公司的用户量比较大,有百万级日活用户的一个量级。该公司的运营系统会专门通过各种条件筛选出大量用户发送推送消息,比如一些促销活动的消息、办会员卡的消息、特价商品的消息。在这个过程中,比较耗时的是筛选用户的过程。
东阳马生架构
2025/02/10
1130
推荐阅读
相关推荐
VLookup等方法在大量多列数据匹配时的效率对比及改善思路
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档