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的"自动填充"功能来填入下面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的函数有进一步的了解,在实际工作中充分利用它的内置函数方便自己的工作!
|