原标题:《VLOOKUP靠边站,这是Excel中最好的搜索方法。》
开学前,部分学校的教务人员需要在下学期给各科老师安排相应的课因此,制定了下表
为了方便查看每个班级,每个科目,对应的老师,他还需要将下表左图中的数据匹配到对应的右表中。
我们应该怎么做呢。
直接用我们常用的匹配函数,Vlookup函数。
因为数据源表不是标准的一维表Vlookup功能很难做到
那么,我们来试试查找功能。
功能方法
关于查找函数查询匹配,需要找到区域大小和返回区域相同的条件区域。
如下图所示,我们可以看到条件区域2不是单列数据区域。
那么,如果我们将条件区域2集成到一个列中,是否可以使用查找函数Lookup。
如下所示,使用Textjoin函数将条件区域2合并到一列中。
对于需要匹配数据的结果区,条件区和返回区,可以使用Lookup函数的经典用法。
查找函数多条件查询的常规公式,
=LOOKUP**…*),返回区域)
它涉及到查找的模糊匹配的使用比如901,902,903中存在901,我们通常使用Excel函数中的Find函数
假设,我们想找到901类对应的位置。
如下图所示,使用Find函数,如果返回值是数值,则存在901类,如果返回错误值,则表示不存在然后我们可以用Isnumber函数来判断是否有数值,也就是是否有901类
PS: Isnumber,如果参数为数值,则返回True,否则返回False。
所有的辅助柱都准备好了我们试着用Lookup找出班级是901,科目是中文
经典配方:
=LOOKUP*),返回区域)
输入相应区域的公式:
=LOOKUP*ISNUMBER($H:$H),$A:$A)
1:语言
条件1:帐户列
条件2:ISNUMBER
返回到:名称列
将查找类901的查找函数列合并到公式中:
=LOOKUP*ISNUMBER(FIND("901 ",$G:$G)),$A:$A)
在下面的右表中输入完整的公式,找到值language和class 901,并用相应的混合引用替换它们:
=LOOKUP*ISNUMBER(FIND($I2,$G:$G)),$A:$A)
语言被替换为J
901被替换为$I2。
这里搞定了~
以上是用辅助柱完成的如果你想要一个公式,你可以做到如下图,有兴趣的朋友可以自己研究一下
=查找* mmult(—($c:$f=$h2),row(1:4)^0)),$a:$a)
PS:MMULT函数是一个矩阵函数,使用该函数的目的是将多列判断组合成一列。
我们是用辅助列和函数做的,对吧很复杂
之所以复杂,主要是因为我们的数据源是一个二维表,在匹配中并不是我们喜欢的一维表。
先把数据源转换成一维表不是简单多了吗。
下面用PowerQuery吧只需三个步骤和鼠标就能轻松完成
PS: PowerQuery是Excel2016及以上版本自带的插件Excel2013后台回复(插件)自行安装后使用
PQ方法
来看看具体操作吧~
选择数据源区域—在选项卡下—单击(从表/区域)—创建表对话框并单击(确定)按钮。
使用逆透视列将数据源转换为一维数据表。
所有选中的类列,鼠标右键。
删除属性列,现在是一维数据表。
操作示意图如下:
透视,类是行,主题是列,名称是值。
选择帐户列—在选项卡下—单击(透视列)。
列:名称
聚合值函数:不要聚合。
操作示意图如下:
更改列的顺序
我们发现此时的栏目名称并不是按照语言,数学等顺序排列的我们需要的
只要把公式中的第二个参数改成账户列表,就可以了!
原件:
=表。透视), "帐户 ", "名称 ")
变更后:
=表Pivot删除了列, "语文 ", "数学 ", "英语 ", "物理 ", "化学 ", "政治 ", "历史 ", "学科 ",
操作示意图如下:
在这里,我们完成了。
是不是超级简单的鸭~
临终遗言
本文阐述了不同班级教师提问的常见形式要求主要难点在于二维表数据源的二维表查询
在查找函数方法中,通过使用merge函数将多个列合并为一列,并使用Find函数来查找位置返回值表示存在,返回的错误值表示不存在
使用经典函数routine lookup *(条件1 =条件区域1))和return area)查询匹配结果。
关于Lookup的经典用法,可以戳下面:
有了lookup,比一般的LOOKUP好用一百倍!
在PQ方法中,我们使用+(透视列)并点击鼠标来完成我们的表格要求。
对于将二维数据转换为一维数据,PQ的逆透视列是一个强大的函数。有了一维表,我们查询匹配数据就不难了~
Excel在生活中无处不在,到处都会用到。
如果你还在为Excel头疼,偶尔为了Excel熬夜加班,看了教程会觉得自己都懂了,但实际操作起来还是会两眼一抹黑...
这时候你就需要系统的学习Excel了!