ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 如何去掉单元格重复数字

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-13 20:52 | 显示全部楼层
本帖已被收录到知识树中,索引项:MID
原帖由 Jdtax 于 2011-2-12 23:22 发表
=SUM(MID(SUBSTITUTE(A1,".",),SMALL(IF(MATCH(MID(SUBSTITUTE(A1,".",)&5^19,ROW($1:$15),1),MID(SUBSTITUTE(A1,".",)&5^19,ROW($1:$15),1),)=ROW($1:$15),ROW($1:$15)),ROW($1:$6)),1)*10^(6-ROW($1:$6)))
数组公 ...



这个方法更好一些,但有个问题,就是一旦给定的数据不重复部分不满足6个的时候就不可以了,
比如331191.111,结果就显示#VALUE!

能否进一步改进呢?在给定的数据中不重复部分有几个就提取出几个

TA的精华主题

TA的得分主题

发表于 2011-2-13 21:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
今天第二次发这个公式了,呵呵。
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
数组公式。

TA的精华主题

TA的得分主题

发表于 2011-2-13 21:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 wangg913 于 2011-2-13 21:11 发表
今天第二次发这个公式了,呵呵。
=MID(SUM(MID(A1&1/17,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
数组公式。

算是彻底解决了,

[ 本帖最后由 chinjingo 于 2011-2-13 21:28 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-2-14 07:55 | 显示全部楼层
原帖由 wangg913 于 2011-2-13 21:11 发表
今天第二次发这个公式了,呵呵。
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
数组公式。



非常感谢

TA的精华主题

TA的得分主题

发表于 2011-2-14 09:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-2-14 09:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-2-14 12:20 | 显示全部楼层
原帖由 wangg913 于 2011-2-13 21:11 发表
今天第二次发这个公式了,呵呵。
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
数组公式。


收藏学习。

TA的精华主题

TA的得分主题

发表于 2011-2-14 13:01 | 显示全部楼层
高,以前总用vba,费脑子想半天。原来公式也可以。

TA的精华主题

TA的得分主题

发表于 2011-2-14 14:05 | 显示全部楼层
原帖由 wangg913 于 2011-2-13 21:11 发表
今天第二次发这个公式了,呵呵。
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
数组公式。

很精典的公式,收藏。

TA的精华主题

TA的得分主题

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

我对大头版主公式的解释

真是深奥奇妙的公式。仰慕。
我对大头版主公式的解释:原公式:
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
一、A1&1/17="755087.391270.0588235294117647",1/17是16位循环小数, 这样连接,保证0-9各个数字都能查到,不至于出错。
二、ROW($1:$10)-1,生成0-9的数组,作为FIND的第一个参数。
三、FIND(ROW($1:$10)-1,A1&1/17)查找0-9各个数字在A!&1/17的位置,
={4;10;11;8;24;2;28;1;5;9}
四、SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10))依次排列这些数字在A1&1/17从前到后的位置。
={1;2;4;5;8;9;10;11;24;28}
五、MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)=MID(A1&1/7,{1;2;4;5;8;9;10;11;24;28},1),很明显,是把A1&1/17中的从前向后不重复的位置。0-9的数字一些一个提取出来。={"7";"5";"0";"8";"3";"9";"1";"2";"8";"4"}
六、10^ROW($1:$10),就是10的1-9次幂{10;100;1000;10000;100000;1000000;10000000;100000000;1000000000;10000000000}
七、用这个数组做"7";"5";"0";"8";"3";"9";"1";"2";"8";"4"做除数,文本也转化成数字,分别得到{0.7;0.05;0;0.0008;0.00003;0.000009;0.0000001;0.00000002;0.000000008;0.0000000004},
八、用sum函数加起来,各个数字的位置刚好错开。=0.7508391284,这就成了MID函数的第一参数:文本字符,
九、MID的第二个参数是公式中的3,因为有一"0.",所以从第三位提取。
十、Mid的最后一参数是提取几位,要求是6位,可是为什么用MIN(6,COUNT(FIND(ROW($1:$10)-1,A1)))这个公式,这 个公式表示最大取6位,少于6位,有几位取几位,COUNT(FIND(ROW($1:$10)-1,A1))中FIND(ROW($1:$10)-1,A1))查找 A1中0-9各数第一次出现的位置,如果没有,返回错{4;10;11;8;#VALUE!;2;#VALUE!;1;5;9},
  =MID(0.7508391284,3,6),结果为750839
斗胆诠释大头版主的公式,很惶恐,望版主见谅。


[ 本帖最后由 swyrlbq 于 2011-2-14 17:15 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 01:22 , Processed in 0.033903 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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