VLOOKUP帮我排座位
作者:***
来源:《信息技术教育》2007年第10期
在普通中小学,信息技术教师大多都要教十几个班的学生,在机房上课时,为了便于管理,免不了要给每个学生对号入座地编一个座位表。将数据手工填写或者逐一输入到Excel表格中,都要花费很多时间。不过没关系,这里有一个偷懒的招数,可以借为一用,即利用Excel中的函数VLOOKUP来实现。
李博 一、基础数据的获取
当然,偷懒是有前提的,那就是到教导处拷贝一份全年级学生名单。差不多每个学校教导处都有这样的档案,并且多为Excel表格,除了学生姓名之外(如图1中的B列),还有班级信息(如图1中C列的“考试号”,用mid函数从第2个字符起提取两个字符放于M列,即生成了学生的“班级”代号)。
P列的“座位编号1”就不用说了,只有待学生坐定后,花几分钟点一遍名并记录下来即可。
二、座位编号的转换
光有P列的“座位编号1”当然还不行,必须保证这个编号的唯一性。比如,李博的座位是D3,但是坐在D3机位的并不只李博一人,除了本班有他的同桌之外,其他每个班也都有两三个人的座位编号是D3,因此,在每个座位编号中还要加上“班级”代号及“同桌”代号,从而给每个学生一个唯一的座位编号,并放在“姓名”列的左边(这一点是后面VLOOKUP查所必需的)。以下我们以第278行李博为例,说明其具体实现。
第一步,在R278单元格输入公式“=M278&"_"&P278”,即将M列的“班级”代号“06”同P列“座位编号1”的“D3”用下划线连接起来,从而得到“座位编号2”——“06_D3”;
第二步,在S278单元格输入“=COUNTIF(R$3∶R278,R278)”,统计同桌信息,即在R$3∶R278范围内对R278(即“06_D3”)进行计数;
第三步,在A278单元格输入“=R278&"_"&S278”,在“座位编号2”之后再加上“同桌”信息,从而得到“座位编号3”,这样,就保证了每个同学座位编号的唯一性!
第四步,通过拖动单元格右下角的填充柄,对A、P、R、S四列进行自动填充,从而完成“数据表”的制作(别忘了工作表的命名要同后面的引用一致)。
三、学生姓名的查询
首先,在一个新工作表中,根据机房布局制作一个醒目的表格(如图2,注意第3行及A列、B列的编号)。
然后,在C4单元格输入公式:“=IF(ISNA(VLOOKUP($F$4&"_"&
C$3&$B4&"_"&$A4,'数据表'!$A$4∶$B$805,2,FALSE) ),"",VLOOKUP($F$4&"_"&C$3&$B4&
"_"&$A4,'数据表'!$A$4∶$B$805,2,FALSE))”。
这里嵌套使用了三个函数IF、ISNA、VLOOKUP。其中核心的就是VLOOKUP(lookup_value,table_array,col_index_num, range_lookup )函数——在表格区域('数据表'!$A$4:$B$805)的首列(即A列)查指定的数值($F$4&"_"&
C$3&$B4&"_"&$A4),即每个学生唯一的座位编号,并由此返回表格当前行中指定的第2列处的数值,即B列的姓名。这样,就完成了通过“座位编号3”查相应的学生姓名的任务。
因为每个机位预设坐三人,但如果没有三人,空缺的单元格会因为这个编号查不到相应的姓名而显示一个错误值 #N/A(即值不存在)。为了避免显示错误值,我们套用了一个IF函数,用ISNA对VLOOKUP的值进行判断,如果值不存在,则返回""(即空值),否则返回VLOOKUP($F$4&"_"&C$3&$B4&"_"&$A4,
'数据表'!$A$4∶$B$805,2,FALSE),即相应的学生姓名。
填好C4单元格之后,再次选择它,拖动其右下角的填充柄,向下填充至C6,保持当前选区为C4∶C6,
再次拖动填充柄至E6,这样,就完成了一个小组9个座位的姓名查。最后选择C4∶E6这9个单元格,复制粘贴到剩余9个小组即可。
至此,一个灵活自如的座次表就制作完成了。使用时,只须在F4单元格输入班级代号即可。比如要查看二(6)班座位表就输入“06”,然后回车;若有学生由于某些原因要调整座位,也只需在“数据表”中改一下他的“座位编号1”就行了。
另外,利用条件格式,还很容易将各班班长以醒目的颜标出。比如,当你在F4单元格输入“06”时,单元格L12及H8马上会突出显示(如图2);当输入“07”时,突出显示的单元格随即变成了L13及G14——二(7)班班长所在的位置!
发布评论