EXCEL中如何根据某列找到重复的行,并将重复只保留一条其余的删除?

注: countif 似乎找出的是重复的列,无法自动让重复的列保留一条,而是把所有重复的边数标出,这样

对于想将重复数据保留一条,而不是全部删除的我来说,不实用。
感谢各位的回答:也许我没说清楚。

我要的是: 要删除的是根据某一列求出的重复的列所在的那一 〔行〕数据,而不是只这一列。

下面几位朋友的方法好像都不行。

看看示范例子,打开的时候选择启动宏(数字证书),可以实现你要的目的的,如果有什么疑问,可以联系QQ 399001
http://www.win-club.net/ray/del.xls

-----

用宏处理这样的问题相对方便一点,有兴趣试试:

一、按ALT+F11 打开VB编辑器

二、双击左边靠上的【工程资源管理器】中的【MS Excel 对象】中的ThisWorkbook,在右边的代码窗口贴入下面的代码:

Sub 删除重复数据()
'以col列为条件删除的重复行数据
'本例是删除标题为sheet1的EXCEL表中以A列(从A2单元格开始)为条件的重复韩国数据
Application.ScreenUpdating = False
'可根据实际情况修改下面三行的结尾值
Dim sheetsCaption As String: sheetsCaption = "Sheet1"
Dim Col As String: Col = "A"
Dim StartRow As Integer: StartRow = 2

'以下不需要修改
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 .Range(Col & i) = .Range(Col & j) Then
Count_1 = Count_1 - 1
.Range(Col & i).EntireRow.Delete
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

三、回到EXCEL表,运行菜单 【工具】-【宏】-【宏】,选择 删除重复数据 这条宏,然后按执行。

这里有示范例子:
http://www.win-club.net/ray/del.xls

注:为方便,我添加了一个按钮的控件执行这个宏,你点击按钮就可以看到结果了,第二个表有原始数据。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-04
可用以下两种方法(假定数据在A列A1:A100):
方法一:直接将不重复数据挑出。
1、在一空白列第一行输入公式:
=index(a:a,small(if(match(a$1:a$100,a$1:a$100,)=row($1:$100),row($1:$100),4^8),row(a1)))&"" 按组合键ctrl+shift+enter结束公式,下拉填充至出现空白。
2、选定下拉填充形成的数据,在其上点鼠标右键——“复制”,再在选定的单元格上点鼠标右键——“选择性粘贴”——“数值”,“粘贴”处选择“无”——“确定”。
3、删除原A列。
方法二:先标记重复数据,再一次性删除。
1、在一空白列第一行输入公式:
=if(countif(a$1:a1,a1)<>1,1,"") 下拉填充。
2、删除所有下拉值为1的行。
第2个回答  2006-10-18
建议两种方法供你参考:
一、用数据透视表,把你要只留一条的列作为数据透视表的行标题就可以,然后把数据透视表的行标题拷出来,再用VLOOKUP提取其它信息什么的

!!!!!!!!!!(呀,不好意思,原来这里的公式敲错了)!!!!!!!!!!!!
二、在最后一列增加一个判断列,假设第一行为标题行,你要处理A列,末行是第n行,则用=IF(COUNTIF(A2:$A$n,A2)>1,"删除","保留"),然后向下填充,再用筛选,把内容为“删除”的行删掉即可

注意:=IF(COUNTIF(A2:$A$n,A2)>1,"删除","保留")是判断是否删除的条件,假设最后一行是第20行,且第10行与第2行重复,这时第2行单元格里的公式就会是=IF(COUNTIF(A2:$A$20,A2)>1,"删除","保留"),COUNTIF的值就是2,整个公式的结果就是“保留”,第10行单元格里的公式就会是=IF(COUNTIF(A10:$A$20,A10)>1,"删除","保留"),COUNTIF的值就是1,整个公式的结果就是“删除”

这样就可以保留最后一次出现的重复行了,如果要保留第一次出现的行,就把结果中的“删除”和“保留”换个个或改一下条件就行了
你也可以固定第2行即=IF(COUNTIF($A$2:$A2,A2)>1,"删除","保留")
第3个回答  2006-10-26
在A2输入
=COUNTIF(A$1:A1,A2)
向下复制公式,>0的删除.

这个公式只计算当前行的前面是否有重复。
注意:"A$1:A1"里$的用法、在向下复制公式时的效果.
效果是将重复只保留第一条其余的删除.
第4个回答  2006-10-29
我以前回答别人的:

http://zhidao.baidu.com/question/12942084.html

这个问题在acess更好解决,如果用excel,你可以这样:
1.将全部数据按大小排列,这样相同的就到一起了.
2.在旁边的列中输入公式:如b2中输入if(a2=a1?1,0),就是说a列中,如果连续的行相同,则b为1,否则为0.
3.按b列对数据排列,删掉b=0的列---把不重复的数字筛选去掉
4.再用上面方法,反过来,可以删掉重复的组.
相似回答