Board logo

标题: [求助] 电子表格2003数据重复问题 [打印本页]

作者: sezhongsefuqi    时间: 2013-11-10 07:26     标题: 电子表格2003数据重复问题

各位高手大侠我遇到难题了恳请高手指点
事情是这样的,我们最近在做一个报表好几千人的那种,就是要填姓名、身份证号联系电话以及工作年限的那种。因为任务量大还要的急所以就分成了几个组来输入。输入完成后发现总人数多了,这里肯定有重复的,我不太懂这方面,请各位懂行的指点一下怎样把重复的人找出来。谢谢。(我用的是2003电子表格)
作者: 9489    时间: 2013-11-10 08:04

找个关键字段(如姓名)排一下序,看一看行不行。
作者: sezhongsefuqi    时间: 2013-11-10 09:53

谢谢还是不行不过还是要谢谢你的。
作者: sezhongsefuqi    时间: 2013-11-10 09:57

没有人懂吗,帮帮忙指点一下说的详细点
作者: photonsex    时间: 2013-11-10 09:59

使用数据透视表或者countif函数都可以找到重复的
作者: sezhongsefuqi    时间: 2013-11-10 11:39

楼上的能说得详细点吗?你说的这个我不懂那个呀
作者: yonghm002    时间: 2013-11-10 12:19

用Excel中数据透析即可,Excel透析功能!透析功能在这就不做详细介绍,说说透析注意事项,中间不可以有空的单元格,同样的名字下面有两个重复了的话就会显示2,输了三次就会显示3!此功能对于大量的数据分析以及统计非常好。
作者: sds898    时间: 2013-11-10 13:29

我觉得最简单的方法还是排序,在录入的同时就打开排序,录入完姓名就可以知道有无重复,虽然比起数据透视表之类的方法笨了点,但是对于不熟悉excel的人来说最稳妥
作者: abc1b    时间: 2013-11-10 16:37

按姓名排序,发现重复的就删掉。再复杂点的就不会了
作者: tian103    时间: 2013-11-10 16:54

难道楼主分组录入后,还是几个工作表,没有合并?在几个工作表之间找重复,貌似要用宏来解决吧,不过别问我,我也不懂。
否则,在同一个工作表里,随便一排序就能发现重复的行,当然要多试几列,因为像名字之类的,容易出现空格导致排序时混乱。

当然,对于几千人的大数据,就是排序正确,一屏一屏地找到重复数据,那也是件重体力活。
作者: tian103    时间: 2013-11-10 19:50

我突然想,如果是同一个工作表(跨表我不会)可以用  条件格式+上面朋友说的countif公式  来加以区别显示。
考虑到分组打字的复杂情况,仍然会出现错漏,所以,可以分别多次、以不同字段来排查,比如,名字是最容易错的(不小心中间多了半角的空格,或者打了别字),那就再以别的字段再查(比如身份证号),反复多次,应该能够解决。

在“姓名”字段进行条件格式操作,方便查找重复:
1、剔除名字中的可能的空格,可以用 查找-替换,来清除。
2、以 姓名 字段进行条件格式操作。拖选 姓名字段  需要查找的范围(列方向),进入条件格式对话框,假设姓名字段第一个数据单元名为c3(其它同理类推),那么,在条件1 里选 公式,键入:        =countif(c:c,c3)>1      ,然后在格式里选择一个显眼的格式,如红色,确定即可。
3、这样只起到重复彩色标注的效果,要删除还容易删错,进一步,以姓名字段排序,这样重复的会显示在一起。

其它字段参考上面做法,这样的结果,应该能满足楼主的需要。
要特别小心的是字符的全角和半角问题。
作者: vr6015    时间: 2013-11-11 00:03

我看到你讲述里面有身份证这一项,身份证是唯一性,利用+counfit 公式可以把所有重复的都标示出来,前提是你的身份证要输入正确,不过一般都能解决。
作者: qqqqq3079    时间: 2013-11-11 00:25

身份证号是不会重复的,只要输入正确。countif这个函数如果excel不熟悉的话很难用好的,最简单就是身份证号或者姓名排序,然后删除重复人员。几千人也不是很多,一两个小时就搞定了。如果是2007的话筛选里有一个高级的选项,可以过滤掉重复记录。
作者: Sakyamuni    时间: 2013-11-11 10:12

不能外链,
只好把官方的解决办法发送给lz看了。

作者: 剑鱼    时间: 2013-11-11 10:28

用姓名排序可以,不过既然你还记录了身份证号码,那用身份证排序马上就看出来了。就算不会复杂的办法,直接找个小蜜浏览一遍,身份证号重复的一眼就看出来了
作者: 樊绍    时间: 2013-11-11 12:26

先排序(按姓名、身份证号),只能人工发现重复的
作者: goodlk    时间: 2013-11-11 17:19

这个查重复,最简单的方法就是排序,但是排了序以后,人工查的话,工作量不小!特别是数据大的,有成千上万条的!

还有一种是自动查重复,要用到涵数!这个网上有很多的资料,我打出来,也成了涉嫌复制!你自行百度一下就OK!

按网上的方法,把涵数筛选完了后,会有标识,再重新排序,把有标识的,就是重复的排在一起,删除掉就OK
作者: facat    时间: 2013-11-14 20:40

引用:
原帖由 sezhongsefuqi 于 2013-11-10 07:26 发表 [bbs=redirect.php?goto=findpost&pid=92804456&ptid=8893711][/bbs]
各位高手大侠我遇到难题了恳请高手指点
事情是这样的,我们最近在做一个报表好几千人的那种,就是要填姓名、身份证号联系电话以及工作年限的那种。因为任务量大还要的急所以就分成了几个组来输入。输入完成后发现总 ...
会使用VBA和宏吗?

用VBA编一个简单的冒泡程序,将单元格都相同的找出来,删掉多余的就行了。

可以按照身份证号码来查,这样比较方便。
作者: hufee    时间: 2013-11-28 11:04

可以使用透视表功能或分类汇总功能
作者: nihao609    时间: 2013-11-28 11:41

1、条件格式也可以,有重复数据设置下突出显示,把有突出显示的删除就可以了。
2、高级筛选,选择不重复记录。
作者: 后山狼    时间: 2013-11-28 12:42

在EXCEL表格里,
1,把有重复数据的一列,框先起来;选中:列表区域
2,在工具栏,选项中:数据--筛选--高级筛选---方式{选将筛选结果复制到其他位置}
3,看一下,列表区域,是不是:有重复数据的那列,不是,可点红色小箭头,在EXCEL表中选中,
4,条件区域,也可以选 一般是跟上面:列表区域一样,
5,复制到:在你列表区域后面,再另选一列(一会就是新的数据,不重复的)
6,在:选择不重复的记录 ,打勾,
7,确定,OK了,是不是
作者: 豆花饭    时间: 2013-11-28 16:44

1、用公式:=COUNTIF($A$1:A1,A1)
A代表你要查找的那一重复列,往下拖,就发现有数字1的就是不重复的,大于1的数字就是重复数字,在排序一下最后结果,把重复的数字删掉就可以了
2、用,数据 高级筛选 删除重复数据
作者: tanghotinjoe    时间: 2013-11-28 18:02

直接在姓名那列按排序 然後一直看下去就行
如果你會寫程式碼的話,
用temp暫存 然後寫兩個for迴圈也可以0 0
作者: f1toretry    时间: 2013-12-2 19:47

我有个方法不知道使用方便不方便,首先按照身份证号进行排序,然后在排序好的表基础上新增加一列X作为插入If函数,例如身份证号所在列为A,那么X列的内容就是if(A(N)=A(N-1),则X(N)=1,否则=0,下拉填入所有的X列后,将X=1的行筛选出来,删了就行了。
作者: pyzl    时间: 2013-12-5 14:27

其实这个可以做宏来搞定这类事,现在简单点用公式解决,楼主你也按身份证号排序(姓名也可能重复),然后在新的一栏输入以下公式(假设第一行为标题,从第二行开始,同时假设A列为身份证号)=if(a2=a1,"重复",""),将公式填充至最后一行,然后你筛选删除出现重复的就是了。
作者: jaunthe    时间: 2013-12-5 18:33     标题: 不单会下片,还会写写码 百分百的原创

打开工具里面的宏。粘贴进去就可以运行了。

Sub perfect()
    '输入
    Dim userInput
        userInput = Application.InputBox("输入需要检查的起始行,结束行,以及需要判断的列,格式如 2,20,C,B")
   
    Dim arrUserInput
        arrUserInput = Split(userInput, ",")
        
     Dim theColumn
          theColumn = arrUserInput(2)
        'theColumn = Asc(arrUserInput(2)) - 64   '进行检验的列

    Dim theStart
        theStart = arrUserInput(0)  '起始行
        
    Dim theEnd
        theEnd = arrUserInput(1) '最后一行的号码.

       If theStart <= 1 Then
       MsgBox "起始行要求大于1"
        End
       End If
      
   
    Dim i   '每一行的号码
    Dim j   '
   

      '排序
                '删除重复行
         
       For i = theStart To theEnd
        For j = i + 1 To theEnd '从当前行至结尾.
             If Cells(i, theColumn) = Cells(j, theColumn) Then
                 Rows(j).Delete
             End If
         Next
       Next
        '删除重复行
End Sub
这是我写的一个宏。适当修改就可以处理你的问题了。运行的时候会卡住。不是死机。耐心等待。

[ 本帖最后由 jaunthe 于 2013-12-5 18:35 编辑 ]
作者: cmy21136    时间: 2013-12-5 20:46

如果只做这一次的话可以在表格中插入一列,在该列中输入=COUNTIF($A$1:$“表格最后一列列标”$“表格最后一行行标”,A1)
,最后将新插入的这一列进行降序排列,(从复的部分就在上面了)
如果要长期从事此工作,最好弄一个专用的宏
Sub 查找与删除重复数据2() '查找与删除col列的重复数据'
Application.ScreenUpdating = False  
'可根据实际情况修改下面三行的结尾值'
Dim sheetsCaption As String: sheetsCaption = "Sheet1"
Dim Col As String: Col = "C"  
Dim StartRow As Integer: StartRow = 4
'以下不需要修改'
Dim EndRow As Integer: EndRow = Sheets(sheetsCaption).Range(Col & "65536").End(xlUp).Row  
Dim Count_1 As Integer: Count_1 = 0
Dim count_2 As Integer: count_2 = 0
Dim i As Integer: i = StartRow
With Sheets(sheetsCaption)
Do  
Count_1 = Count_1 + 1
For j = StartRow To i - 1  
If WorksheetFunction.Trim(Format(.Range(Col & i), "<")) = WorksheetFunction.Trim(Format(.Range(Col & j), "<")) Then  
Count_1 = Count_1 - 1  
.Range(Col & i).EntireRow.Delete

.Range(Col & i).Select  

.Range(Col & i).Font.ColorIndex = 3

.Range(Col & j).Font.ColorIndex = 4  

ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + "[#]"

MsgBox "第" & i & "与第" & j & "条数据重复"  
EndRow = Sheets(sheetsCaption).Range(Col & "65536").End(xlUp).Row
i = i - 1  
count_2 = count_2 + 1
Exit For
End If
Next
i = i + 1  
Loop While i < EndRow + 1  
End With  
MsgBox "共有" & Count_1 & "条不重复的数据"
MsgBox "删除" & count_2 & "条重复的数据"
Application.ScreenUpdating = True  
End Sub  


这编辑模式写着真累
可能有空格或'的错误,用的时候需要排查下,也可以把注释删了在用
作者: 65922353    时间: 2013-12-5 21:02

正在学习呢!!~~~谢谢 各位大虾
作者: wahaha_glg    时间: 2013-12-6 19:19

重复行删除的问题还要用VBA??牛刀用在蚂蚁身上了。
07及以上版本,直接在数据选项中使用删除重复项即可
03版本,可以用countif函数:假设A列为姓名,B列为身份证,数据起始行为第2行,则
C列公式写为
=countif(a:a,a2)    或      =countif(b:b,b2)
第一个公式表示用姓名来查找是否重复(所以若有重名就要注意排除了),第二个公式表示用身份证号来查找是否重复,这个应当说才是更好的选择,因为身份证号不会重复,不过我不相信你们几千个号码不会录错,嘿嘿。
结果若大于1,即代表重复行,筛选出来选择性删除即可。
作者: lyg1353906    时间: 2013-12-8 10:21

我觉得用多重排序能解决。
不过有一个简单的办法…找个安装了office2007的电脑,打开你现在的文件。里面有个条件格式的功能可以自动给重复值加标记。




欢迎光临 SiS001! Board - [第一会所 关闭注册] (http://154.84.6.13/bbs/) Powered by Discuz! 7.2