当前位置:文档之家› 怎样使用vlookup函数实现不同excel表格之间的数据关联

怎样使用vlookup函数实现不同excel表格之间的数据关联

怎样使用vlookup函数实现不同excel表格之间的数据关联
怎样使用vlookup函数实现不同excel表格之间的数据关联

怎样使用vlookup函数实现不同excel表格之间的

数据关联

在工作中遇到一些统计表格的事情,其实就是很简单的统计,粘贴、复制,但是不断的重复简单的粘贴、复制就是一项非常费时的巨大工程,为了简化操作流程,提高工作效率,特地在网上搜了些相关的资料来联系,个人也得到一些小的体会,今天有兴致和大家分享一下,好好学习哟,有什么问题大家可以交流交流哈。下面我们通过一个小小的例子来说明如何用vllkup简化我们的工作。

分两种情况:

1同一个sheet中有两个表格,一个是旧表(原始数据),一个是新表(做好后能得到我们所需要的数据);

2sheet1中一个表(原始数据),sheet2中一个表(新表),也是两个表,这两种情况都差不多,都是以原表为基础,得到新表

我们看第一种情况,同一个sheet中有两个表,

原表为:

新表为:

这里原表为已知,新表中有数据的部分为,空格的地方都是我们需要填写的,其实一对比这两个表,我们很容易发现新表要填的内容就是原表中能找到的,但是行的顺序变了,如果表格很大,我们反复使用粘贴复制来完成新表中的空缺,眼睛都会找花,会很累,但是,现在我们用vlookup,就easy多了。

循序渐进学Excel2003成为高手的捷径数据录入与处理...

选择“新表”中的B2单元格,如表1所示。单击[fx]按钮,出现“插入函数”对话框。在类别中选择“全部”,然后找到VLOOKUP函数,单击[确定]按钮,出现“函数参数”对话框,如表2所示。

表1

表2

第一个参数“lookup_value”为两个表格共有的信息,也就是供excel查询匹配的依据,也就是“新表”中的A2单元格。这里我们可以填入$A2,加一个$,是为了说明列不变,是绝对的,而当你向下拖动的时候,列会相应的改变。这样会简化我们得工作,注意一定要选择新表内的信息,因为要获得的是按照新表的排列顺序排序。

第二个参数“table_array”为需要搜索和提取数据的数据区域,这里也就是整个“基础数据”的数据,即“基础数据!A2:D5”。为了防止出现问题,这里,我们加上“$”,即“基础数据!$A$2:$D$5”,这样就变成绝对引用了。

第三个参数为满足条件的数据在数组区域内中的列序号,在本例中,我们新表B2要提取的是“基础数据!$A$2:$D$5”这个区域中B2数据,根据第一个参数返回第几列的值,这里我们填入“2”,也就是返回性别的值(当然如果性别放置在G列,我们就输入7)。(我的理解是,新表中性别这一列要返回原表中性别所在的列,也就是性别在原表中是第几列就填几,一般我们为了提高效率,在拖动后,只需要改这个返回几列的数字,其他都不用改,方便快捷啊)

第四个参数为指定在查找时是要求精确匹配还是大致匹配,如果填入“0”,则为精确匹配。这可含糊不得的,我们需要的是精确匹配,所以填入“0”(请注意:Excel帮助里说“为0时是大致匹配”,但很多人使用后都认为,微软在这里可能弄错了,为0时应为精确匹配),此时的情形如图4所示。这里填1,软件会提示是true,填0会提示为false,但是根据经验我们填0,提示为false,但是是正确的,可能是软件编程的时候出了问题,毕竟是盗版的,理解哈。

(注明一下,不要按照表格中的填写,按照文字所述才是快捷之道,上表中,A2应改为$A2A2:D5应改为$A$2:$D$5最后一行固定为0,我们所要改动的只有第三行,col_index_num。

按[确定]按钮退出,即可看到C2单元格已经出现了正确的结果。如图5:

把B2单元格向右拖动复制到D2单元格,我们需要手工改一下,只需要改之前我说的第三行,即可显示正确数据。一行数据出来了,对照了一下,数据正确无误,再对整个工作表的列进行拖动填充,拖动完之后,新表就出来了。(向下拉什复制

不存在错误问题的,这里不用担心,只需要保证我们所拖动复制的行不出问题就没事了)。这样,我们就可以节省很多时间了。

在最后我还得说一点就是,这里我们举的例子,原表第一列是姓名,第二例是性别,第三列是年龄,第四列是籍贯,而新表也是这样的,那假如原表的列还是不变,第一列是姓名,第二列是性别,第三列是年龄,第四列是籍贯,而新表的列发生变化了怎么办?情况会是怎样呢?根据我个人的经验,只要原表的第一列是姓名,新表的第一列也是姓名(姓名不可雷同,就是同一个表中不能有两个一样的姓名),不管新表其他列怎么变(这里说的是列的顺序,与原表比较而言哈),都按照上面的方法来处理。

但是如果新表第一列跟原表不一致,(原表第一列为姓名,新表第一列不是姓名,而是其他的,比如年龄,那么你就需要手动把新表中姓名这一列移到第一列来,再按照上面同样的办法处理,否则,就会出错哟。(个人经验哈,不足之处还请指出)。

第一个参数“lookup_value”为两个表格共有的信息,也就是供excel查询匹配的依据,也就是“新表”中的A2单元格。注意一定要选择新表内的信息,因为要获得的是按照新表的排列顺序排序。

第二个参数“table_array”为需要搜索和提取数据的数据区域,这里也就是整个“基础数据”的数据,即“基础数据!A2:D 5”。为了防止出现问题,这里,我们加上“$”此处一定要手动加上绝对引用防止出错,即“基础数据!$A$2:$D$5”,这样就变成绝对引用了。

第三个参数为满足条件的数据在数组区域内中的列序号,在本例中,我们新表B2要提取的是“基础数

据!$A$2:$D$5”这个区域中B2数据,根据第一个参数返回第几列的值,这里我们填入“2”,也就是返回性别的值(当然如果性别放置在G列,我们就输入7)。

第四个参数为指定在查找时是要求精确匹配还是大致匹配,如果填入“0”,则为精确匹配。这可含糊不得的,我们需要的是精确匹配,所以填入“0”(请注意:Excel帮助里说“为0时是大致匹配”,但很多人使用后都认为,微软在这里可能弄错了,为0时应为精确匹配),此时的情形如图4所示。

https://www.doczj.com/doc/7f12941916.html,/showpic.html -

blogid=4a7e19be0100bitj&url=https://www.doczj.com/doc/7f12941916.html,/orignal/4a7e19bet5eb3aecf6b7d

按[确定]按钮退出,即可看到C2单元格已经出现了正确的结果。如图5:

向下拉填充柄即可。

这样,我们就可以节省很多时间了

方法2

假设sheet1姓名在A列,身份证在B列sheet2中姓名输入在A列,在B2输入公式

=IF(ISNA(VLOOKUP(A2,sheet1!A:B,2,)),"",VLOOKUP(A2,sheet1!A:B,2,))回车确定,鼠标对准单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往下拖动填充

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 不必进行排序。

⑵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。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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) :判断值是否为文本。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

IF:执行逻辑判断,它可以根据逻辑表达式的真假,返回不同的结果,从而执行数值或公式的条件检测任务。函数表达式为:IF(logical_test,value_if_true,value_if_false),其中含义如下所示:

logical_test:要检查的条件。

value_if_true:条件为真时返回的值。

value_if_false:条件为假时返回的值。

———————————————————————————————————————————————————

下面介绍下通过上述的三个函数如何达到我想要的要求的,下图是工作中的两个EXCEL表,sheet1和sheet2,现在要将sheet2的每一行数据在sheet1中查找匹配,如有sheet1中存在,则在sheet2中的E列显示“存在”,否则显示“不存在”。

首先使用了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的第一个条件的结果是“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三个函数有一定的认识,以后还得继续研究学习。

offset函数的语法用通俗点的说法如下

=offset(起始参照位置,上、下偏移行(高)数,左、右偏移列(宽)数,包含需要的行高(行数),包含需要的列宽(列数))

后面第4、5 2个参数可以省略

起始参照位置为偏移时的参照点,就如A1为参照,向下偏移2行,向右3列,这样获得到的单元格为D3,如果再把第四五2个参数也代入数字(3行,3列),这样就是从D3单元格开始获得一个为三行三列的矩形区域,其单元格范围为D3:F5这个区域

相关主题
文本预览
相关文档 最新文档