有朋友可能要问了“有没有搞错,索引值怎么会有这么多相同的?”实际上,这个索引值是专门配合后面的VLOOKUP函数来使用的,光靠这个数字是没有用的。不过我还是可以告诉你,相同的索引值中,第一次出现的为有效索引值。
再新建一工作表,将其命名为“汇总”。在A1、B1、C1、D1、E1单元格中分别输入“索引”、“姓名”、“语文”、“数学”、“总分”。在A2单元格中输入数字1,然后向下拖曳到单元格A25,得到从1到24的序列数。在B2单元格中输入公式“=VLOOKUP(A2,索引!$A$2:$B$24,2,0)”,参照前文对VLOOKUP函数的介绍,我们可以知道此公式的功能在于根据A列相应单元格的数值,在“索引”工作表指定区域中找到对应的数值,返回给当前的单元格。Lookup_value参数和Table_array 参数分别运用了相对引用和绝对引用,都是为了复制公式的需要。在此,我们还利用了VLOOKUP函数的另一个特性,即如果Table_array 中有多个值与Lookup_value对应,则函数仅响应第一个出现的值。现在明白为什么“索引”工作表中有多个重复值也没关系了吧!
然后在C2和D2中分别输入公式“=IF(ISNA(VLOOKUP(B2,语文!$A$2:$B$13,2,0)),0,VLOOKUP(B2,语文!$A$2:$B$13,2,0))”、“=IF(ISNA(VLOOKUP(B2,数学!$A$2:$B$13,2,0)),0,VLOOKUP(B2,数学!$A$2:$B$13,2,0))”,用于根据B列中的学生姓名从“语文”和“数学”工作表中取得他们相应的成绩。ISNA()是用来判断VLOOKUP()的值是否有效的函数,即如果VLOOKUP()找不到相应的成绩时,ISNA()返回TRUE。再结合IF(),此公式的完整含义为如果相应的学生有对应的成绩,则返回他的成绩,否则为0。因为有许多学生只有单科成绩,所以这样的判断还是必要的,否则当VLOOKUP()找不到对应的成绩时,会返回值“#N/A”,不但难看,而且影响后面总分的计算。
在E1单元格中输入公式“=C2+D2”就能得到总分,这个公式应该没什么好说的吧!
最后,同时选中C1、D1、E1单元格并往下进行拖曳以复制公式。怎么样,全都算好了吧!学生一个不多也一个不少,刚刚好,而且他们的成绩也一分不差,是不是很容易!见图二所示。
好了,现在再回过头去理解一下方案中所有的公式,应该都是非常简单了的吧!按照本文的思路,如果出现类似的问题,相信也难不倒你啦!
单击此处下下载示范工作簿个公式的含义是如果在单元格区域B3:B24中,单元格B3中的学生姓名的出现次数大于1的话,就返回A2——也就是公式所在单元格的上一个单元格的值,注意这里使用的是相对引用,此时即返回数值1;如果单元格B3中的学生姓名的出现次数不大于1的话,就返回另一个数值,该数值等于A2的值加上1。在表示单元格区域B3:B24时,笔者在标识该区域的结束单元格时用到了绝对引用,虽然实际上单元格B24后面已经没有任何数据了,但这样做一来是为了强调在编辑公式时需要养成良好的习惯,二来是为了与同一公式中的其它相对引用进行对比。绝对引用保证了COUNTIF函数不会超出指定范围,而相对引用又保证COUNTIF函数进行判断的条件每次都不同,且进行统计的范围每次都在缩小,如此才能避免对判断过的单元格进行重复统计。最后我们将单元格A3的公式向下进行拖曳到单元格A24,以进行公式的快速复制。这样,索引过程就完成了。结果如图一所示。
有朋友可能要问了“有没有搞错,索引值怎么会有这么多相同的?”实际上,这个索引值是专门配合后面的VLOOKUP函数来使用的,光靠这个数字是没有用的。不过我还是可以告诉你,相同的索引值中,第一次出现的为有效索引值。
再新建一工作表,将其命名为“汇总”。在A1、B1、C1、D1、E1单元格中分别输入“索引”、“姓名”、“语文”、“数学”、“总分”。在A2单元格中输入数字1,然后向下拖曳到单元格A25,得到从1到24的序列数。在B2单元格中输入公式“=VLOOKUP(A2,索引!$A$2:$B$24,2,0)”,参照前文对VLOOKUP函数的介绍,我们可以知道此公式的功能在于根据A列相应单元格的数值,在“索引”工作表指定区域中找到对应的数值,返回给当前的单元格。Lookup_value参数和Table_array 参数分别运用了相对引用和绝对引用,都是为了复制公式的需要。在此,我们还利用了VLOOKUP函数的另一个特性,即如果Table_array 中有多个值与Lookup_value对应,则函数仅响应第一个出现的值。现在明白为什么“索引”工作表中有多个重复值也没关系了吧!
然后在C2和D2中分别输入公式“=IF(ISNA(VLOOKUP(B2,语文!$A$2:$B$13,2,0)),0,VLOOKUP(B2,语文!$A$2:$B$13,2,0))”、“=IF(ISNA(VLOOKUP(B2,数学!$A$2:$B$13,2,0)),0,VLOOKUP(B2,数学!$A$2:$B$13,2,0))”,用于根据B列中的学生姓名从“语文”和“数学”工作表中取得他们相应的成绩。ISNA()是用来判断VLOOKUP()的值是否有效的函数,即如果VLOOKUP()找不到相应的成绩时,ISNA()返回TRUE。再结合IF(),此公式的完整含义为如果相应的学生有对应的成绩,则返回他的成绩,否则为0。因为有许多学生只有单科成绩,所以这样的判断还是必要的,否则当VLOOKUP()找不到对应的成绩时,会返回值“#N/A”,不但难看,而且影响后面总分的计算。
在E1单元格中输入公式“=C2+D2”就能得到总分,这个公式应该没什么好说的吧!
最后,同时选中C1、D1、E1单元格并往下进行拖曳以复制公式。怎么样,全都算好了吧!学生一个不多也一个不少,刚刚好,而且他们的成绩也一分不差,是不是很容易!见图二所示。
好了,现在再回过头去理解一下方案中所有的公式,应该都是非常简单