在处理学生成绩的时候,经常要把客观题的机读卡成绩导入到学生成绩表中,由于学生涂卡错误等原因,导致读卡机导出的客观题成绩不全,从而与学生成绩表名册不完全一致,这时可以借助IF函数帮助判断并一一比对,但工作量比较大。当然,也可以借助Access的数据库管理功能建立查询来实现比对,步骤也很繁琐。能不能利用Excel的函数功能来实现快速导入呢?本文提供两种利用Excel函数实现快速导入的方法。
一、VLOOKUP函数
观察读卡机导出的客观题成绩表,是按照准考证号升序排序的,第一到第四列数据依次为:考号、姓名、班级代码、成绩(如图1)。我们只要利用VLOOKUP函数的纵向查找功能找到指定的准考证号来返回4列的成绩就可以了。
图1
该函数的语法规则如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
函数示例(如图2):
=IF(COUNTIF(外!A:A,总!A2)=1,VLOOKUP(总!A2,外!A$2:D$844,4),-1)
解释说明:
1.COUNTIF(外!A:A,总!A2)=1
读卡机导出的外语成绩表的A列考号中含有成绩总表A列的一个考号,说明读卡机读出了考号为A2的同学的外语成绩。
2.VLOOKUP(总!A2,外!A$2:D$844,4)
在语文表A2到D844的数据区域内的A列查找成绩表的考号A2并返回对应的D列的单元格的值。$是单元格锁定标记,被锁定的行或列将不随单元格的填充而变化。
3.IF(,,-1)
判断,如果有读卡成绩就返回读卡成绩,否则返回-1。
图2
二、SUMPRODUCT函数
SUMPRODUCT函数的汉语意思是乘积之和,在给定的几个数组中,将数组间对应的元素相乘,并返回乘积之和。
语法规则如下:
SUMPRODUCT(array1,array2,array3……)
array1,array2,array3……为2到30个数组,其相应元素需要进行相乘并求和。
函数示例(如图3):
=IF(COUNTIF(生!A:A,总!A2)=1,SUMPRODUCT((生!A$2:A$844=总!A2)*(生!D$2:D$844)),-1)
解释说明:
1.生!A$2:A$844=总!A2
条件判断:数组A2:A844每一个元素与A2对比,相同为真返回1,不同为假返回0,得到一个由若干个0和1组成的数组。
2.*(生!D$2:D$844)
两个数组乘积求和,从而返回指定考号A2的生物成绩。
图3
三、两种方法的差异
VLOOKUP函数要求各科读卡成绩表区域A$2:A$844按升序排,多科目成绩导入时需要根据各科读卡人数的不同准确调整区域范围。
SUMPRODUCT函数只要求区域包含全部读卡成绩范围,范围大了也没有关系,因此可以统一设置成全部学生的最大区域即可,不需要根据各科读卡人数的不同调整区域范围,具有较好的适应性。