ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 从行提取重复数据,求出重复数据出现的位置确是对的,公式错误出现在哪里?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-8-20 10:09 | 显示全部楼层 |阅读模式
本帖最后由 excelhomesofa 于 2012-8-27 23:03 编辑

行取重复值2.rar (29.42 KB, 下载次数: 22)

取重复值3.rar (14.71 KB, 下载次数: 27)

从论坛上找了很多关于取重复数据的帖子,基本上都是和“列”有关的问题;好不容易找到个和我基本一样的,而由于关键词问题,我绕了很久,这是和我问题类似帖子的地址http://club.excelhome.net/forum.php?mod=viewthread&tid=711555
由于此帖行起始数据都是从A列开始的,提取重复数据公式我一开始是直接拿来主义-改改行列号,原本认为就解决问题了,可是没有想到根本不行。经过一翻学习之后,找到部分问题所在,可是依然还有许多疑问,附件已经更新成"行取重复值3” ,请重新下载。由于这个问题对我很难,目前还没解决,烦请各位老师抽时间帮我看看,谢谢。

TA的精华主题

TA的得分主题

发表于 2012-8-20 10:20 | 显示全部楼层
第一个 你的公式稍微改改就行
  1. =IFERROR(INDEX(1294:1294,SMALL(IF(COUNTIF($PF1294:$PY1294,$PF1294:$PY1294)=1,COLUMN($PF:$PY),1048576),COLUMN(A:A))),"")
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-8-20 10:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
findingyuzi 发表于 2012-8-20 10:20
第一个 你的公式稍微改改就行

谢谢,iferror,对函数不熟悉,iserror,isnumber用过,容错处理怎么这么麻烦!论坛上有专门的贴吗?我去看看,谢谢!

TA的精华主题

TA的得分主题

发表于 2012-8-20 10:35 | 显示全部楼层
excelhomesofa 发表于 2012-8-20 10:26
谢谢,iferror,对函数不熟悉,iserror,isnumber用过,容错处理怎么这么麻烦!论坛上有专门的贴吗?我去看 ...

iferror是07版才出来的函数 可以替代03版本的if(iserror()) 比较好用
论坛上有很多资源的  你可以去发掘发掘

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-8-20 11:19 | 显示全部楼层
本帖最后由 excelhomesofa 于 2012-8-27 21:38 编辑

问题的解决主要是根据wangjguo44老师对http://club.excelhome.net/thread-711555-1-1.html问题中的回复才得以基本解决,由于水平有限,尚有部分没有搞懂。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-8-20 18:27 | 显示全部楼层
本帖最后由 excelhomesofa 于 2012-8-27 21:40 编辑

这个附件已经更新并变化了;但是有些疑问,请看附件行取重复值3

行取重复值2.rar

29.42 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2012-8-28 08:55 | 显示全部楼层
excelhomesofa 发表于 2012-8-20 18:27
这个附件已经更新并变化了;但是有些疑问,请看附件行取重复值3

关于《附件行取重复值3》解法4,=INDEX(2:2,SMALL(IF((COUNTIF($G$2:$P$2,$G$2:$P$2)>1)*((MATCH($G$2:$P$2&"",$G$2:$P$2&"",)+COLUMN($F:$F))=COLUMN($G:$P)),COLUMN($G:$P),256),COLUMN(A:A)))&""解读一下:
1、附件中你声称已经理解(COUNTIF($G$2:$P$2,$G$2:$P$2)>1)*((MATCH($G$2:$P$2&"",$G$2:$P$2&"",)+COLUMN($F:$F))=COLUMN($G:$P))这一段,那就比较简单了,这一段用左键抹黑点F9,得到{1,0,0,1,1,0,0,0,0,0}——即得到$G$2:$P$2中重复的数据第一次出现的位置,——用这个常数数组代入到公式中去,理解起来方便多了。
2、IF({1,0,0,1,1,0,0,0,0,0},COLUMN($G:$P),256)——把重复数第一次出现的列标序号返回出来,不是第一次出现的赋以256,得到{7,256,256,10,11,256,256,256,256,256};
3、SMALL(IF({1,0,0,1,1,0,0,0,0,0},COLUMN($G:$P),256),COLUMN(A:A))——此处COLUMN(A:A)等于1,把上面2、中得到的数组中第1小的数,即第一个重复数据的列标序号7提取了出来。(右拖后COLUMN(A:A)变成COLUMN(B:B)、COLUMN(C:C)……即右拖得到2、3……,用SMALL依次提取第2小、第3小……的列标序号10、11提取出来);
4、=INDEX(2:2,SMALL(IF(({1,0,0,1,1,0,0,0,0,0},COLUMN($G:$P),256),COLUMN(A:A)))——在第2行中把第一个符合条件(第一个首次出现重复数的列标序号7)的数据6提取出来;
5、&""——不是可有可无,如果说事先知道只有三个重复数,而且只向右拉三列,的确可以不要&"",但是在不知情的情况下,多右拖几列,没有&"",则便出现0值,用了这个&"" ,就把0屏蔽掉了。(问题是a、如果源数据中0也是重复值并需要被考虑的话,却也被屏蔽掉了;b、用了&"" ,原来是数值型变成了文本型了)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-12-24 02:26 , Processed in 0.042595 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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