超级飞侠每集名称:EXCEL的批量替换该如何使用?

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 19:15:28
我现在有一份200个的人员名单,格式如下:

姓名 工号
王一 007
王二 008
王三 009
王四 010
....

=================
我还有另一份数据,是这些人上个月的成绩,格式如下:

姓名 成绩
王一 98
王四 100
王三 90
王二 88
......

================
我现在需要的结果是:

把成绩表中的人员姓名全部替换为工号,该如何操作呢?

请大家帮帮忙,并说明每一步公式的含义,谢谢!
.
leeon_yang:
哦,不好意思,我忘了说清楚了,那些人名有重复的,也就是说在成绩表中的数据可能是2000个,不能按排序的方法处理,非常感谢!
还有啊,你说的那个VBA的方法好复杂啊,看不懂,听说VLOOKUP就可以实现,但我一直搞不清楚是怎么用的,能否讲一下啊?谢谢!
.

使用 VLOOKUP 函数

思路就是,根据你的员工名单(注意:员工的名字跟工号必须一一对应,不能有重复的,假如员工有同名同姓的,需要先区分,例如王一 001 王一 002 先把第一个王一改成王一一。)

姓名 工号
王一 001
王二 002
王三 003
王四 004

然后设置函数,判断成绩单的名字,返回员工的工号。

姓名 成绩 工号
王三 80 003
王四 99 004
王二 78 002
王一 60 004
王四 88 004
王二 68 002

最后可以把工号用选择性粘贴会名字那里或者把名字那列隐藏了。

我做了个演示文件,你可以下载来看看。

http://www.win-club.net/ray/test1.xls

如果人少的话,直接排序来做就可以。贴几下就行了。

如果人很多,可以考虑用VBA来做,但是条件是人名不能有重复。大概过程是这样:

sub()
dim a,b,c as int
dim name as string
for a=1 to 最后
name= worksheets("成绩").cells(a,1).value //读取成绩表里的姓名
for b=1 to 最后
if worksheets("工号").cells(b,1)=name then //查找工号表里的姓名
c= worksheets("成绩").cells(a,2).value //读取成绩
worksheets("工号").cells(b,3)=c //在工号表后面填写成绩
next b

next a

end sub

要是你还是不会我可以帮你做,我的QQ是39639050,不过只有18日和20日的白天在线。

人员名单表为sheet2
在成绩表中C2输入
=VLOOKUP(A2,Sheet2!$A:$B,2,FALSE)
然后在C列向下复制C2的公式即可.

VLOOKUP使用说明:
在表格或数值数组的首列查找指定的数值,并由此返回表格或数组当前行中指定列处的数值。当比较值位于数据表首列时,可以使用函数 VLOOKUP 代替函数 HLOOKUP。

在 VLOOKUP 中的 V 代表垂直。

语法

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

Lookup_value 为需要在数组第一列中查找的数值。Lookup_value 可以为数值、引用或文本字符串。

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

如果 range_lookup 为 TRUE,则 table_array 的第一列中的数值必须按升序排列:…、-2、-1、0、1、2、…、-Z、FALSE、TRUE;否则,函数 VLOOKUP 不能返回正确的数值。如果 range_lookup 为 FALSE,table_array 不必进行排序。

通过在“数据”菜单中的“排序”中选择“升序”,可将数值按升序排列。

Table_array 的第一列中的数值可以为文本、数字或逻辑值。

文本不区分大小写。

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

Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。

说明

如果函数 VLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于等于 lookup_value 的最大值。
如果 lookup_value 小于 table_array 第一列中的最小数值,函数 VLOOKUP 返回错误值 #N/A。
如果函数 VLOOKUP 找不到 lookup_value 且 range_lookup 为 FALSE,函数 VLOOKUP 返回错误值 #N/A。