【小记】excel vlookup一对多匹配
一个学生报四门课,输出每个学生课程
- 应用概述
 - 操作
 - 预处理数据
 - 计数指令 COUNTIFS
 - 进行一对多匹配 vlookup
 
应用概述
应用场景:学生报名考试,需要整理成指定格式,发给考试院。
 一个学生最多报考四门
格式实例:准考证号   姓名   科目1   科目2  科目3  科目4
 
原数据报名表:
 
 最后得到结果:
 
操作
预处理数据
创建两个新excel表。
 表1:将各sheet里的所有数据,复制进去
 表2:将各sheet里的所有 准考证号数据,复制进去
 注:姓名可能存在同名,准考证号是唯一的。
 表2中操作:选中列,重复项,使得每个准考证号只出现1次。
 
计数指令 COUNTIFS
在表1中,
 step1 准考证号左边插入一列,进行计数COUNTIFS,用于后面vlookup匹配使用。
COUNTIFS($B$1:B1,B1)
注意是$B$1 固定引用,COUNTIFS表示B1出现了第几次
 

 step2 B1基础上加上次数
=B1&COUNTIFS($B$1:B1,B1)
 

 将去除过重复项 的表2,复制进表1
 
进行一对多匹配 vlookup
=VLOOKUP($H1&1,$A:$E,5,0)注意:是$H1,将H列锁定 $A$E
&1 :准考证号在 A到E列 第1次出现,	匹配第5列的数据(即科目)
&2 :准考证号在 A到E列 第2次出现,	匹配第5列的数据(即科目)
&3:准考证号在 A到E列 第1次出现,	匹配第5列的数据(即科目)
&4 :准考证号在 A到E列 第2次出现,	匹配第5列的数据(即科目)
 
补充:如果存在匹配不到的,默认使用空
=IFERROR(VLOOKUP($H1&1,$A:$E,5,0),"")
 

