Excel教程:一对多查询典型案例
全套Excel视频教程,扫码观看
最近我们的果冻布丁同学遇到了一个关于入库单的问题。到底是什么样的入库单让她这么抓狂呢?
果冻布丁同学的需求是只需要在入库单I2单元格中填入红色的单号就可以从明细表中自动查找对应的物料名称规格、价格等数据并填充好,然后将其打印出来。
入库明细表:
入库单:
练习课件请加入QQ群:264539405下载
由于一个单号对应了多个物料,所以果冻布丁同学的问题就是典型的一对多查询问题。
解决思路:
首先我们看到入库信息表中的单号与项目编号是有相关性的,项目编号是由单号加上0-9数值依次顺序组成,项目编号与物料信息数据一一对应。所以我们可以将单号与数字的组合即项目编号而不是单纯的单号作为查找值。
函数公式:
=IFERROR(VLOOKUP($I$2&ROW(单据打印!M1)-1,入库!$C:$K,COLUMN(C1),0),"")
将函数公式向右向下填充即可。
公式解析:
(1)$I$2&ROW(单据打印!M1)-1:用于将编号与数字0、1、2等组合变成项目编号20181113A10、20181113A11、20181113A12等。ROW用于获取行号,由于其返回的结果最小值只能为1,想要从0开始就需要-1。M1,只是用来协助获取行号,可以是B1、L1、H1等任何第一行的单元格。
(2)COLUMN(C1)含义是返回C1所在单元格的列序号,即3。使用函数COLUMN的目的是为了让VLOOKUP第三个参数由静态的数字变成动态的数字,达到批处理效果。如当整体函数公式向右填充时COLUMN(C1)变成COLUMN(D1),返回4。
(3)IFERROR函数的作用是为了规避vlookup函数统计的错误结果,如果遇到#N/A这样的错误则返回空白。
其实excel和数学题一样,一题多解那是必须的。
既然VLOOKUP能解决,那么INDEX+MATCH、OFFSET函数应该也能解决果冻布丁同学的问题。
INDEX+MATCH函数公式:
=IFERROR(INDEX(入库!E:E,MATCH(单据打印!$I$2&ROW(单据打印!O1)-1,入库!$C:$C,0)),"")
这里的函数公式我们就不做详细的解释,INDEX+MATCH组合相信大家应该很熟悉了。
函数公式的重点与方案一基本一致,都是通过将单号合并ROW返回的数值作为查找值,以此匹配入库单中C列对应的物料信息。
果冻布丁同学的问题得到了解决。原来排长队等拿入库单的现象基本消失,在供应商群里,很多人给她点赞:姑娘,谢谢啦!
总结:
VLOOKUP函数本身的确是不能进行一对多查找的。上面2个方案都是通过给相同的查找值加个小尾巴——标号,来区分,这样就能通过一对一的方式完成查找。所以大家遇到类似果冻布丁同学的问题时思维要变换一下,把一对多变成一对一。另外,本例中我们巧妙的通过ROW、COLUMN两个函数公式替代了静态数字,让公式得以批量向右向下填充。大家以后记得多多运用哦!
添加号主微信号
时不时还会给你发Excel福利
想要全面系统学习Excel,不妨关注部落窝教育《一周Excel直通车》视频课或者《Excel极速贯通班》。
《一周Excel直通车》视频课
包含Excel技巧、函数公式、
数据透视表、图表。
一次购买,永久学习。
最实用接地气的Excel视频课
《一周Excel直通车》
风趣易懂,快速高效,带您7天学会Excel
38 节视频大课
(已更新完毕,可永久学习)
理论+实操一应俱全
主讲老师: 滴答
Excel技术大神,资深培训师;
课程粉丝100万+;
开发有《Excel小白脱白系列课》
《Excel极速贯通班》。
原价299元
限时特价 99 元,随时涨价
少喝两杯咖啡,少吃两袋零食
就能习得受用一生的Excel职场技能!