工作上遇到了想在两个不同的EXCEL表里面进行数据的匹配,如果有相同的数据项,则输出一个“YES”,如果发现有不同的数据项则输出“NO”,这里用到三个EXCEL的函数,觉得非常的好用,特贴出来,也是小研究一下,发现EXCEL的功能的确是挺强大的。这里用到了三个函数:VLOOKUP、ISERROR和IF,首先对这三个函数做个介绍。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VLOOKUP:功能是在表格的首列查指定的数据,并返回指定的数据所在行中的指定列处的数据。函数表达式是:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
1. Lookup_value为“需在数据表第一列中查的数据”,可以是数值、文本字符串或引用。
2.Table_array 为“需要在其中查数据的数据表”,可以使用单元格区域或区域名称等。
⑴ 如果 range_lookup 为 TRUE或省略,则 table_array 的第一列中的数值必须按升序排列,否则,函数 VLOOKUP 不能返回正确的数值。如果 range_lookup 为 FALSE,table_array 不必进行排序。
2.Table_array 为“需要在其中查数据的数据表”,可以使用单元格区域或区域名称等。
⑴ 如果 range_lookup 为 TRUE或省略,则 table_array 的第一列中的数值必须按升序排列,否则,函数 VLOOKUP 不能返回正确的数值。如果 range_lookup 为 FALSE,table_array 不必进行排序。
⑵Table_array 的第一列中的数值可以为文本、数字或逻辑值。若为文本时,不区分文本的大小写。
3. Col_index_num 为table_array 中待返回的匹配值的列序号。
Col_index_num 为 1 时,返回 table_array 第一列中的数值;Col_index_num 为 2 时,返回 table_array 第二列中的数值,以此类推;如果Col_index_num 小于 1,函数 VLOOKUP 返回错误值 #VALUE!;如果Col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值 #REF!。
4.Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果不到精确匹配值,则返回小于lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果不到,则返回错误值 #N/A。
3. Col_index_num 为table_array 中待返回的匹配值的列序号。
Col_index_num 为 1 时,返回 table_array 第一列中的数值;Col_index_num 为 2 时,返回 table_array 第二列中的数值,以此类推;如果Col_index_num 小于 1,函数 VLOOKUP 返回错误值 #VALUE!;如果Col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值 #REF!。
4.Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果不到精确匹配值,则返回小于lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果不到,则返回错误值 #N/A。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ISERROR:它属于IS系列,IS系列用来检验数值或引用类型,有九个相关的函数:
ISBLANK(value) :判断值是否为空白单元格。
ISERR(value) :判断值是否为任意错误值(除去 #N/A)。
ISERROR(value) :判断值是否为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)。
ISLOGICAL(value) :判断值是否为逻辑值。
ISNA(value) :判断值是否为错误值 #N/A(值不存在)。
ISNONTEXT(value) :判断值是否为不是文本的任意项(注意此函数在值为空白单元格时返回 TRUE)。
ISNUMBER(value) :判断值是否为数字。
ISREF(value) : 判断值是否为引用。
ISTEXT(value) :判断值是否为文本。
ISERR(value) :判断值是否为任意错误值(除去 #N/A)。
ISERROR(value) :判断值是否为任意错误值(#N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME? 或 #NULL!)。
ISLOGICAL(value) :判断值是否为逻辑值。
ISNA(value) :判断值是否为错误值 #N/A(值不存在)。
ISNONTEXT(value) :判断值是否为不是文本的任意项(注意此函数在值为空白单元格时返回 TRUE)。
ISNUMBER(value) :判断值是否为数字。
ISREF(value) : 判断值是否为引用。
ISTEXT(value) :判断值是否为文本。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IF:执行逻辑判断,它可以根据逻辑表达式的真假,返回不同的结果,从而执行数值或公式
的条件检测任务。函数表达式为:IF(logical_test,value_if_true,value_if_false),其中含义如下所示:
logical_test:要检查的条件。
value_if_true:条件为真时返回的值。
value_if_false:条件为假时返回的值。
value_if_true:条件为真时返回的值。
value_if_false:条件为假时返回的值。
———————————————————————————————————————————————————
下面介绍下通过上述的三个函数如何达到我想要的要求的,下图是工作中的两个EXCEL表,sheet1和sheet2,现在要将sheet2的每一行数据在sheet1中查匹配,如有sheet1中存在,则在sheet2中的E列显示“存在”,否则显示“不存在”。
sheet2
sheet1
首先使用了VLOOKUP函数将sheet1中的数据在sheet2中进行查,=VLOOKUP(A2,sheet1!$A$2:$C$952,1,FALSE),其中A2表示用来匹配项的数据,将A2在sheet1的所有列中查就是使用第二个条件:sheet1!$A$2:$C$952,“$”表示绝对引用,复制的时候不会随着单元格位置变化而变化,1表示匹配成功后返回第一列的数据,否则返回#N/A,FALSE表示返回精确匹配值。
注:绝对引用和相对引用只要在公式栏里面对应的数据下按F4功能键即可切换。
当有返回结果后刚开始直接使用IF去判断了,公式是:=IF(VLOOKUP(A2,sheet1!$A$2:$C$952,1,FALSE)=A2,"存在","不存在"),这个时候发现当匹配成功的时候输出了“存在”,当匹配不成功是却输出了“#N/A”,一直没法实现想要的结果,后来发现VLOOKUP只能输出指定的值或者“#N/A”,而与A2判断的结果也为“#N/A”,作为IF函数是无法识别“#N/A”,这样导致不会输出“不存在if vlookup函数的使用方法”,所以要想办法将IF的第一个条件的结果是“Ture”or "False",于是就到了函数ISERROR(Value),这个输出的结果是“Ture”or "False",于是公式就变成了=IF(ISERROR(VLOOKUP(A2,sheet1!$A$2:$C$952,1,FALSE)),"不存在","存在"),大功告成,输出自己想要的结果,当在shhet2中的项目能在sheet1中到时输出“存在”,不到时输出“不存在”。
总结:VLOOKUP的函数比较好用,可以寻并且匹配,但是要注意只能是匹配项在首
列,如果不是则要用HLOOKUP函数。EXCEL的函数功能还是挺强大的,好好研究对于我们数据统计和处理是非常有帮助的,目前对于VLOOKUP、ISERROR和IF三个函数有一定的认识,以后还得继续研究学习。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论