我们还需要VLOOKUP函数吗之返回多个匹配结果
我们以前介绍过,在很多场景中,如果想要进行查找,在Excel中有比查找函数(如VLOOKUP等)更好的方法,具体见一个严肃的问题——还需要VLOOKUP函数吗。
今天我们介绍另外一个查找场景:返回多个匹配结果。
假设我们有以下的销售明细数据:
我们还有另外一份产品资料数据,记录了每个产品属于哪个大类:
现在我们的问题是,需要根据给定的大类,返回所有该大类下产品的销售明细:
一般说到查询,我们就会想到VLOOKUP函数,但是VLOOKUP只能用来查询并返回第一个匹配的结果。要想实现我们的需求,需要做一系列辅助操作,比较麻烦。如果用其他的查询函数,基本也是这个情况。
今天我们介绍用Power Query实现这个需求的方法。
第一步,我们将产品销售和产品大类两个表加载到Power Query中:
具体方法就是:
首先:选中数据源区域的任意单元格,然后在数据选项卡中点击“从表格”,
然后在PQ界面的“主页”选项卡中,点击“关闭并上载至”:
在出现的窗口中选择“仅创建链接”,
点击加载即可完成。
依此方法,将产品销售和产品大类都加载到Power Query中。
然后用同样的方法将条件区域也加载到Power Query中:
接下来,在数据选项卡中,依次点击新建查询,合并查询,合并:
在出现的对话框中,将第一个表选择为产品大类,第二个表选择为销售明细,分别点击两个表格中的产品名称列,在下面的联接种类中选择“左外部”:
点击确定,进入Power Query编辑器,
点击上图中箭头所指的按钮,在列表中按下图所示进行选择,展开销售明细表:
得到结果:
将销售日期列转换为日期,并删除除了产品名称,销售日期,销售额及产品类别职位的其他列:
删除后的结果如下:
在主页选项卡中,选择合并查询:
在对话框中,将第二个表选择为查询条件,并将联接种类选择为“左外部”,
点击确定后得到如下结果:
展开查询条件表格,
点击确定,
在最后一列中筛选所有不等于null的结果,
得到结果,
将最后两列删除:
结果上载到Excel的合适位置即可:
大功告成!