分享

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

 超越梦想之上 2014-09-19

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

 
本文转自:星云电脑教程www.gonet8.com

---- 大家都知道EXCEL是微软公司的OFFICE

产品,EXCEL一经推出就得到很多经常处理大

量数据的人士的喜爱,主要是因为它的快捷

和自动计算的功能,特别是他提供了大量的

函数,让我们能够十分方便的使用!

---- 例如: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,如果编号是21、22、

23、24那么就不能得到奖金!

---- 表(1)

编号 奖金
5 50
10 110
15 120
20 100
25 60


---- 第一步我做了一个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)”,直接在单元格中

输入也是可以的!

---- 表(2)

ABCDE
1姓名编号奖金基本工资合计
2张一3#N/A100#N/A
3李二21100130230
4王五10110130240
5大侠15120150270
6小虾20100160260
7老板2560250310

---- 然后,使用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)

姓名编号正确奖金错误奖金基本工资

错误合计正确合计
张一30#N/A100#N/A100
李二210100130230130
王五10110110130240240
大侠15120120150270270
小虾20100100160260260
老板256060250310310

---- 通过这个公式我们能够认识到EXCEL的

强大数据处理能力,并由此让您对EXCEL的函

数有进一步的了解,在实际工作中充分利用

它的内置函数方便自己的工作!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多