希克苏鲁伯陨石和地震:请excel高手请进回答一下这个简单的问题(200分)

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 04:22:25
一个工作表里面有50000条数据,其中约2000条是重复的.我通过以下方法来筛选:
1.点击EXCEL左上角空白处,全选这个工作表.
2.数据---筛选---自动筛选(这一步可能是多余,但是我一直这样做)---数据---筛选---高级筛选(我自创的)
3.选在原有区域显示筛选结果(这时列表区域已自动填充内容了)
4.条件区域空白
5.在选择不重复的记录前打勾.
6.按确定开始筛选.
我的问题是:有的时候可以准确筛选出结果,可有的时候结果确是从50000多条数据中选出20多条重重数据.其实我知道至少有20000多条重复数据.这是怎么一回事呢?
怎么没有人能给个正确的答案.五六个人回答的都不对呀

1,可能是信息并不完全一致,比如某些带空格某些不带,某些具有特殊格式例如时间格式或者货币格式与数值就不同.
2,我说,Excel这软件比较差劲,不管你信不信.处理数据速度慢,尤其是数据多的时候.
另外一点,用内置宏和VB的时候常会出错.错得莫名其妙.比如内置VB处理数值变成字串并加入某个字符,结果就会有些成功有些失败有些变成半角全角无规律.这一点不排除是我水平太差.
-------下面是另一个相关帖子中我的发言,仍不修改,坚持高速处理.
刚好前几天帮朋友解决了这么个问题.
解决思路是这样的,首先Excel中用VB编程不方便也不实用.所以绕路前进.首先在Excel中对表进行按第一列排序.然后输出成为csv文件,我编了个小程序处理这个文件.你把CSV文件命名为"tel.csv"然后和我的程序放在一起,运行一次程序,然后将生成的"telnew.csv"导入Excel随意咯.....
http://k4me.myrice.com/k4me.exe
回答者:k4me - 进士出身 八级 7-12 23:24
-----------相关帖子位置:
http://zhidao.baidu.com/question/9646509.html?pn=0
------------
也同意你使用筛选功能,毕竟是内置,就像用惯PS的人,即使裁剪一下也舍不得用ACDSEE而只用PS.理解.
======================================二次补充
楼主,建议你把你的表格内重要的字段列删除,然后把表发上来,大家帮你想办法,另外你也参照一下自己处理的结果与别人处理的结果有什么不一致的地方,找到问题关键所在.也对未来看到此帖的人有所帮助.声明,最好别给我分.选择用筛选功能完美解决的答案发红旗.如果你自己解决了,建议把详细操作重点写在补充或者评语里.

请看专业的正确回答:
1、第二步的“自动筛选”可以省略
2、高级筛选不重复的数据,只给出重复数据中的第一条数据,其它不于显示。比如一行和三行、五行的数据相同,筛选后只显示第一行的数据。
3、正确操作
1、先用你的操作方法,筛选出20条数据,将这20条数据(包括标题行,也必须有标题)复制到新表上
2、然后全部显示原有数据,再重新对这些数据进行高级筛选,将新表上的数据作为条件区域。将除标题以外的所有数据删除(记住是删除行)
3、最后把新表上的数据复制回原表上(不包括标题行)即可。
一切OK
当然如果你懂VBA的话,还有其它的方法,相知道发消息给我吧。!!

问题补充:
其实还有更简单方法,你只将所有数据排一下序(任何序都行),然后再用你的方法来操作,但注意不要全部删除,因为其中包含一条不重复的数据。

高级筛选条件区域空,筛选的是第一列的数据,如果根据第一列判断不出是否重复的话,这样是筛选不出来的。
如果你要筛选的不是第一列,可以这样设置条件
找一个空白的列,(假设筛选第二列)
第一行空,
第二行输入:=b2=if(countif(b2:b$2)=1,b2,"")
这样就可以根据第二列数据刷选重复数据了。

另外一种方法不用高级筛选,
插入辅助列,
输入函数:
=if(countif(b2:b$2)=1,"重复","")
然后自动筛选“重复”即可,删除重复,剩下的就是不重复的了

哪位大侠看看我的200分问题?
http://zhidao.baidu.com/question/10677850.html

这个问题我以前遇到过,最后还是编了个程来解决的。大概是这样

sub bb()

dim a,b,c as int
dim aaa,bbb,ccc as string

for a=1 to 最后
aaa=worksheets("sheet1").cells(a,1).value
for b=a+1 to 最后
if worksheets("sheet1").cells(b,1).value=aaa then
worksheets("sheet1").cells(b,12).value=1
endif
next b
next a

end sub

意思就是在重复的后面一栏标一个1

标完后对这一行排序,重复的内容就都排到一起可以删除了。

是不是你的条件区域和表格数据区域字段名没有完全匹配,而且自动筛选和高级筛选是两个各自独立的方法,要用哪一个只需点一个即可,不需要先点自动再点高级,再一个条件区域空白是什么意思呀,高级筛选时条件设定也很重要:该条件区域至少为两行,第一行为设置筛选条件 的字段名,该字段名必须与数据清单中的字段名完全匹配!
第一步:单击数据清单内的任何一个单元格,可以不必全部选中;
第二步:选取"数据"菜单中"筛选"命令下的子命令"高级筛选",出现"高级筛选"对话框
第三步:在"方式"框中选择结果的输出位置
第四步:确定筛选的列表区域,这时你可选中整个表格
第五步:在"条件区域"选中你所设定的筛选条件所在的单元格区域
第六步:选中对话框中的"选择不重复的记录"复选框
第七步:单击"确定"按钮!

songme的回答最简便,但只适用于某列数据的重复筛选。如果是对多列数据的重复筛选,会误删非重复的数据的,例:
a 12 nnn ""
a 14 nnn ""
a 12 nnn "重复"
b 12 nnn "重复"
c 34 mmm ""
b 12 nnn "重复"
用songme的方法对B列使用公式,会删除"b 12 nnn"。
正确的解法是把多列合并成一个唯一索引字串,然后再用songme的公式对这一索引列进行重复筛选:
公式:=a1&b1&c1&d1&...(请注意合并后的字串不要超过255个字符)
例:
a 12 nnn a12nnn ""
a 14 nnn a14nnn ""
a 12 nnn a12nnn "重复"
b 12 nnn b12nnn ""
c 34 mmm c34mmm ""
b 12 nnn b12nnn "重复"
如上所述,其实不用合并全部的数据列,只要把可能重复的多列合并即可