ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 75339|回复: 172

[分享]8+4+1种方法查找“不重复数据”并排列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-5-6 19:53 | 显示全部楼层 |阅读模式

不重复筛选方法很多,俺在这奉献8种,前2种是摘抄gvntw版主的。

如需排错,请参考106楼的4种方法。

方法1

=IF(ROW(1:1)>SUM(1/COUNTIF(源数据,源数据)),"",INDEX(A:A,SMALL(IF(COUNTIF(OFFSET($A$2,,,ROW(源数据)-ROW(A$1)),源数据)=1,ROW(源数据)),ROW(1:1))))
 
方法2

自定义名称X=T(OFFSET(筛选不重复值!$A$2,SMALL(IF(COUNTIF(OFFSET(筛选不重复值!$A$2,,,ROW(源数据)-ROW(筛选不重复值!$A$1)),源数据)=1,ROW(源数据)),ROW(INDIRECT("1:"&SUM(1/COUNTIF(源数据,源数据)))))-ROW(筛选不重复值!$A$2),))

 
方法3

=INDEX(A:A,SMALL(IF(MATCH(源数据,源数据,)=ROW(源数据)-ROW($A$1),ROW(源数据),65536),ROW(源数据)-ROW($A$1)))&""
 
方法4

=INDEX(A:A,SMALL(IF(MATCH(源数据,源数据,)=ROW(源数据)-ROW($A$1),ROW(源数据),65536),ROW(1:1)))&""
 
方法5

=INDEX(源数据,MATCH(1,1*(COUNTIF($F$1:$F1,源数据)=0),))
 
方法6

=INDEX(源数据,MATCH(1,--NOT(COUNTIF($G$1:$G1,源数据)),))
 
方法7

=INDEX(源数据,MATCH(1,IF(COUNTIF($H$1:$H1,源数据),,1),))
 
方法8

=INDEX(源数据,MATCH(,COUNTIF($I$1:$I1,源数据),))


 
最后3种今天刚想出来的,最喜欢方法8了,公式短小精悍,超级喜欢。(有点自恋,呵呵!)

080512再增加一种:

方法9:

=CHAR(SMALL(IF(FREQUENCY(CODE(源数据),CODE(源数据)),CODE(源数据)),ROW(1:1)))

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

方法10:

以下是引用gaolinyou在2008-5-12 8:09:50的发言:

还有一种方法:=OFFSET($A$1,MATCH(,COUNTIF($I$1:I1,源数据),),)

是从andysky版主的贴子里学来的,和第8种方法原理一样。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

106楼chrisfang版主提供2种方法,排错方法比较另类。

方法11:

=T(INDEX(A:A,MIN(IF(COUNTIF(L$1:L1,源数据),65536,ROW(源数据)))))

方法12:

=T(OFFSET(A$1,MATCH(,COUNTIF(M$1:M1,$A$2:$A$19),),))

方法13(115楼zqj_824727提供):

=LOOKUP(2,1/(COUNTIF($N$1:N1,$A$2:$A$18)=0),源数据)

 

7ObcdU2f.rar (7.86 KB, 下载次数: 1029)
[此贴子已经被作者于2008-6-4 2:30:37编辑过]

S4xXUfRR.rar

3.57 KB, 下载次数: 467

[分享]8种方法查找“不重复数据”并排列

Jevzlqec.rar

3.99 KB, 下载次数: 295

[分享]8种方法查找“不重复数据”并排列

acbiOKMS.rar

4.01 KB, 下载次数: 263

[分享]8种方法查找“不重复数据”并排列

zYPxa1O5.rar

4.22 KB, 下载次数: 261

[分享]8种方法查找“不重复数据”并排列

O7G1erOx.rar

4.43 KB, 下载次数: 299

[分享]8+1+1种方法查找“不重复数据”并排列

zueqndgb.rar

7.44 KB, 下载次数: 635

[分享]8+1+1种方法查找“不重复数据”并排列

TA的精华主题

TA的得分主题

发表于 2008-5-6 20:03 | 显示全部楼层

谢谢分享,够用拉。

个人还是喜欢用高级筛选或者输入公式=IF(COUNTIF($A$2:A2,源数据)=1,A2,0),下拉,然后f5,定位公式文本复制粘贴文本,不喜欢老用公式摆在那里,数据多了显得慢

TA的精华主题

TA的得分主题

发表于 2008-5-6 20:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-5-6 20:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这样的公式,=COUNTIF(C7:$C$21,C7)>1等等也有妙用噢

TA的精华主题

TA的得分主题

发表于 2008-5-6 20:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

samsoncsr辛苦了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-6 20:51 | 显示全部楼层
QUOTE:
以下是引用shaowu459在2008-5-6 20:03:22的发言:

谢谢分享,够用拉。

个人还是喜欢用高级筛选或者输入公式=IF(COUNTIF($A$2:A2,源数据)=1,A2,0),下拉,然后f5,定位公式文本复制粘贴文本,不喜欢老用公式摆在那里,数据多了显得慢

shaowu459兄说的对极了,对于一次性的筛选不重复数据,用高级筛选即简单又快捷。

对于数据源经常的需要录入,且要求表格有一定智能化要求的就只能依靠公式了。

用有些函数的一个弊端就是运算速度很慢,精确查找、排错、SUM等对于数据量很大的表格运算速度都是很慢的。只能等到计算机的性能不断的提升了。呵呵!

至于优化公式让运算快起来,其实是没多少常人能掌握的了的,因为缺少一个优化效果量化的工具,优化有时仅仅是凭感觉。

顺便试了一下=IF(COUNTIF($A$2:A2,源数据)=1,A2,0),这个公式不能排除空格。

《下拉,然后f5,定位公式文本复制粘贴文本》,学习了。

[此贴子已经被作者于2008-5-6 22:42:12编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-6 22:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢热心人~!

受教了~!

TA的精华主题

TA的得分主题

发表于 2008-5-6 22:42 | 显示全部楼层

方法5~8下拉时,超过不重复元素的个列数后,会出现如方法2的#N/A,而在计算此列的不元素个数时(不用函数)#N/A参与了计算。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-6 23:21 | 显示全部楼层
QUOTE:
以下是引用shareate在2008-5-6 22:42:08的发言:

方法5~8下拉时,超过不重复元素的个列数后,会出现如方法2的#N/A,而在计算此列的不元素个数时(不用函数)#N/A参与了计算。

计算方法8的不重复个数可以用=SUM(N(ISTEXT(I1:I999)))-1

TA的精华主题

TA的得分主题

发表于 2008-5-7 00:54 | 显示全部楼层
公式里面还有很多不懂。。那个源数据是怎么定位的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 02:54 , Processed in 0.053187 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表