前面文章中为大家介绍了工作中经常用到的单条件和多条件下的一对一查询方法,今天给大家介绍一下一对多的查询方法。
例如表1中同一个发票号码对应了多个订单号,但是我现在需要将每个发票号对应的所有订单号提取到一个单元格中,见表2。虽然表2并不是一个规范的数据格式,但是由于我们在日常工作中有时需要向银行或海关等部门提供一些纸质文件,里面就会涉及到一个方框内要填写所有订单号或是发票号之类的信息,所以表2这种格式更便于我们快速输出类似表单。这种情形,应该大部分应付账款会计都遇到过,类似工作如果我们用公式做成标准模板,效率会提高不少。
表1
表2
一对多查询的关键在于我们要依次找出一个目标对应的第一个数据,第二个数据…..,而传统的Vlookup和Index只能找到目标对应的一个数据。此时我们必须结合数组才能解决这个问题。假设一个发票号最多对应8个订单号,那我们可以通过Index+small+数组依次取出订单号,然后通过&进行连接即可。
C1公式(输完按Ctrl+回车),输完横向纵向拖曳到J列即可。
=IFERROR(INDEX(Sheet1!$B$2:$B$14,SMALL(IF(Sheet1!$A$2:$A$14=Sheet2!$A2,ROW(Sheet2!$1:$13),4^8),COLUMN(Sheet2!A:A))),"")
K1公式
=C2&","&D2&","&E2&","&F2&","&G2&","&H2&","&I2&","&J2
B1公式
=LEFT(K2,LEN(K2)-COUNTBLANK(C2:J2))
这里我们运用到思路是通过辅助列依次找出对应的订单号,然后通过连接的方式将各个订单号输出到一个单元格里。当我们不能一次性得到想要的结果时,不妨一步步推导一下,中间过渡一下可能更好理解。
案例文件请通过如下链接下载
链接: https://pan.baidu.com/s/1qZhNcao 密码: g2pv
注:以上公式的详细讲解将会在后续的视频课程中推出,敬请期待!
领取专属 10元无门槛券
私享最新 技术干货