我是人力资源,先前我们已经有一个全员数据库的表格了,现在各单位又上报了一次个人信息情况,需要比对

两个表格一点都不一样,求神们帮帮我吧,好几千人啊,我自己慢慢核对哪个人还在不在各单位,哪个人有没有新入到各单位,能给我找死找疯呢啊......我就一小白,五一还得加班搞这个,求帮帮我吧.......
有没有高人在呢啊? 求求各位帮帮忙了吧....... 这个能把人玩疯了啊

第1个回答  2012-04-29
如果信息表单元格位置都保持一致,可用VBA写一段宏,进行比较。
如果每份表格的表单名称都相同,也可以用函数和宏组合——函数取值,宏做整理。
关键是要知道要比什么内容——只用姓名、单位,还是用身份证、单位来比。
前者怕重名,后者18位号码容易弄错——最怕填报单位弄错。追问

姓名即可 别的不细填也行 就看原来的人里有没有辞职走了的 新报的表里有没有后来新来的人 原来没有记录 挑出来录进去就好 我贴的图第一个是各单位报上来的新的个人情况信息表么 下面那个是老的汇总表 求求帮帮我吧 能有个q什么的帮帮我吗? 求求你了

追答

新表要区分几种情况:1、每人一个表单的单个表单文件;2、每人一个表单的多表单文件;3、一个表单有多个表格的复杂文件。
文件名、表单名有什么规律?

追问

一个文件里分每个科室的sheet,每个科室有十几个 几十个上面我列举的那样个人信息情况表,这一点就能玩死人了,每个人都占十几行呢......... 我的qq是309822705

追答

就是说一个表单上面有多处姓名?
这是比较麻烦的问题。你尝试检查下,看有没有什么规律能够让计算机找到每个姓名。
比如:姓名肯定都在B列,而且无一例外地,左右两边单元格一定是“姓名”、“性别”
又或者,每个姓名之间一定是间隔固定行数

追问

我给你发过去你帮我看看弄行不?我已经没办法追问了

追答

好像内容多了不能提交,这里先把主要的放上(省略了批量文件处理,不知道能不能在新的提问中提交)

(前面省略部分简介:逐个打开文件,并在每个文件中找到样本数据位置)
'----读取样本数据,与对照数据比较,备注重复和新增情况
PN = C.Offset(0, 1).Value
EC = WorkSheetsFunction.CountA(ThisWorksheet.Range("A:A"))
T = 0
For Each w In ThisWorksheet.Range("A1").ReSize(EC,1)
If w.Value = PN Then
If Len(w.Offset(0,1).Value) > 0 Then
l = Left(w.Offset(0,1).Value , Len(w.Offset(0,1).Value) - 5)
r = Cstr(Val(Right(w.Offset(0,1).Value , 5)) + 1)
w.Offset(0,1).Value = l + r
Else
w.Offset(0,1).Value = "已存在00000"
End If
T = 1
Exit For
End If
Next w
If T = 0 Then
ThisWorksheet.Range("A1").Offset(EC,0).Value = PN
ThisWorksheet.Range("A1").Offset(EC,1).Value = M + "!" + s.Name + "00000"
End If
'----一个样本数据完成
(后面省略部分简介:查找样本的循环,打开文件的循环以及差错处理)

用法介绍:新建表格文件,在SHEET1A列存放对照数据(如已有的名称数据),在宏编辑器中新建模块,编写宏(包括取样比对),将这个文件保存到科室文件同一文件夹。

宏运行效果:自动逐一打开科室文件,自动逐一找到左边是“姓 名”右边是“性 别”的单元格并取值(即科室姓名),将其与对照数据逐一比对,相同就备注“已存在00000”,没有匹配的,就追加到记录末尾并备注文件名和表单名,重复的一律备注累计重复次数。

相似回答