返回首页
当前位置: 主页 > Excel教程 > Excel2007教程 >

EXCEL的If和IsError函数来消除VLOOKUP函数的错误值

时间:2012-02-22 14:31来源:Office教程学习网 www.office68.com编辑:麦田守望者

VLOOKUP函数就是一个十分好的应用函数,它主要是用来计算如奖金分配等工作的,为我们减少了很多的麻烦和一些不必要的错误,只要您的条件值是正确的,他保证能够让您得到准确无误的值,今后只要您的条件值有所改动,VLOOKUP函数马上就会更新您的所有值。好了,言归正传!

  VLOOKUP函数 语法VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)Lookup_value 为需要在数据表第一列中查找的数值。

  Table_array 为需要在其中查找数据的数据表。可以使用对区域或区域名称的引用。

  Col_index_num 为table_array中待返回的匹配值的列序号。

  Range_lookup 为一逻辑值,指明函数VLOOKUP返回时是精确匹配还是近似匹配。如果为TRUE或省略,则返回近似匹配值。

  首先,我们看看下面的这个表(见表1),这是一个编号和奖金分配的表,本例中奖金是随着编号的固定数值的不同而改变,而且任何不在此编号内的数据都将视为不合格产品,不能给奖金!如20和25这两个值,奖金分别为100和60,如表(1)

编号
奖金
5
50
10
110
15
120
20
100
25
60
表(1)

如果编号是21、22、23、24那么就不能得到奖金!  

  第一步我做了一个VLOOKUP函数,让奖金与编号挂钩,首先,看看我们的工资表是如何使用VLOOKUP函数的,见表(2)这是一个EXCEL数据表,它VLOOKUP需要一个主表[表(2)]和一个条件表[表(1)],将他们放在一张表内即可,例如SHEET1内的不同列中即可,我将主表放在A1:E7中,将条件表[表(1)]放在H和I列内,一切准备就绪后,我们就可以将VLOOKUP函数放在相应的单元格中了,即C列中从C2到C7,首先,选择单元格C2,然后我们点击工具条中的按钮,在"查找与引用"里找到"VLOOKUP"函数,点击确定即可,进入对话框后在:

  lookup_value内输入:B2
  table_array内输入:H:I
  col_index_num内输入:2

  range_lookup内输入:暂时不输入(空值)即近似匹配值,将在以下详细介绍。

  确定后,单元格C2得到的公式为:"=VLOOKUP(B2,H:I,2)",直接在单元格中输入也是可以的!  
    

 
EXCEL的If和IsError函数来消除VLOOKUP函数的错误值

   然后,使用EXCEL的"自动填充"功能来填入下面5个数据,填充的结果如[表(2)],只要你改变"条件表" [表(1)]的值,[表(2)]数值将马上进行改变。这样就实现了表格的自动化,但是有一点你可以看到这个表格有两个很大的缺陷,首先就是它出现了错误值#N/A,这个错误值代表的意思是:"除以了0";其次"=VLOOKUP(B2,H:I,2)"这个公式是一个近似匹配值,即20和25之间的任意值奖金都为100,如本例的单元格B3它的值为:21,就得到奖金100(参看[表(1)])。而本例的要求是:不在编号内的数据,都将视为不合格产品,且不能给奖金!即C3的值必需为"0",不应该是"100",否则将导致合计数据为230而不是130元,产生错误!怎样才能改正这两个错误的发生呢?

  这就是我要做的第二步,选用另两个函数,ISERROR和IF函数,ISERROR函数是一个测试错误的函数,它的语法是:

  ISERROR 值为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?或#NULL!)。如果您的测试值为错误的时候,当前得到的值为"TRUE",否则将为"FALSE"。

  举例:如果有一个单元格"B9"是一个公式为:"=2/0"回车后,它将成为一个错误值即"#DIV/0!",用以告诉我们任何值不可以除零!在单元格"A9"内输入公式"=ISERROR(B9)"回车后"A9"的值为:"TRUE",表示测试结果是"真",如果再次改变"B9"的公式为:"=2/2"回车后给公式变为"1",我们会发现同时"A9"的值也发生了变化,变为:"FALSE"。

  在本例中公式"VLOOKUP(B2,H:I,2)"相当于上例中的"B9"单元格,现在我们看看如下两个公式:

  ①"=ISERROR(VLOOKUP(B2,H:I,2))" ←近似匹配值②"=ISERROR(VLOOKUP(B2,H:I,2,FALSE))" ←精确匹配值上述两个公式,得到的值是不同的,即①得到的两个值(20和25)之间的值如21得到的是FLASE,这就与我们的特定值[表(1)]规定的"任何不在此编号内的数据都将视为不合格产品,不能给奖金!"产生了冲突,所以只能强制让公式得TRUE,即只能用②这个公式,让VLOOKUP函数精确匹配。这样C2和C3的值都为"TRUE"我们的目的就达到了!

  最后一步就是使用IF函数,它显然是一个条件函数,语法

  IF(logical_test,value_if_true,value_if_false)Logical_test 计算结果为TRUE或FALSE的任何数值或表达式。

  Value_if_true Logical_test为TRUE时函数的返回值。

  Value_if_false Logical_test为FALSE时函数的返回值。

  "Logical_test"的值就是在第二步中,说的②精确匹配公式"Value_if_true"这个值添入:" "0" ",即值公式②的值等于TRUE时。

  "Value_if_false"这个值添入:"VLOOKUP(B2,H:I,2) ",即值公式①的值等于FALSE时。

  OK单元格"C2"最终的公式得到了,如下:

  "=IF(ISERROR(VLOOKUP(B2,H:I,2,FALSE)),"0",VLOOKUP(B2,H:I,2))"最后使用"自动填充"功能,向下拖动即可得到相应的数值,见[表(3)]

 
姓名
编号
正确奖金
错误奖金
基本工资
错误合计
正确合计
张一
3
0
#N/A
100
#N/A
100
李二
21
0
100
130
230
130
王五
10
110
110
130
240
240
大侠
15
120
120
150
270
270
小虾
20
100
100
160
260
260
老板
25
60
60
250
310
310
表(3)


  通过这个公式我们能够认识到EXCEL的强大数据处理能力,并由此让您对EXCEL的函数有进一步的了解,在实际工作中充分利用它的内置函数方便自己的工作!

------分隔线----------------------------
标签(Tag):excel excel2007 excel2010 excel2003 excel技巧 excel教程 excel实例教程 excel2010技巧
------分隔线----------------------------
推荐内容
猜你感兴趣