Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3228|回复: 6

[已解决]找出重复数

[复制链接]
发表于 2012-1-31 00:46 | 显示全部楼层 |阅读模式
Book2b.rar (10.95 KB, 下载次数: 43)
发表于 2012-1-31 01:40 | 显示全部楼层
"要求是每连续6格都有共同数找出显示在a12 ,例c5到h5都有1要显示在a12,d5到i5,e5到j5一直到fw5"
a12就一个单元格,共同数怎么放,按顺序连起来吗?譬如c5到h5都有1,d5到i5也有1,这两个区域的共同数都是1,就在a12里显示11吗?还有,如果有一个区域里面有两个共同数怎么放?问问题要问清楚。

(以下的言论仅代表我个人意见,与Excel精英培训网无关)
另外,我们这个网站是学习、研究Excel、VBA技术的,不是专门给别人做题目的,像你提的问题,我认为不是你在学习、研究VBA时遇到的问题,如果是,你应该把你的代码贴出来给大伙看看、哪里运行有问题。把技术学到手才是王道。
回复

使用道具 举报

 楼主| 发表于 2012-1-31 11:34 | 显示全部楼层
happym8888 发表于 2012-1-31 01:40
"要求是每连续6格都有共同数找出显示在a12 ,例c5到h5都有1要显示在a12,d5到i5,e5到j5一直到fw5"
a12就一个 ...

说得很在理啊!同数指要1个,最后结果最多也就几个数,怎么放你自己决定吧,要改动一下,连续6格改成连续7格
回复

使用道具 举报

 楼主| 发表于 2012-1-31 13:33 | 显示全部楼层
hjuy78 发表于 2012-1-31 11:34
说得很在理啊!同数指要1个,最后结果最多也就几个数,怎么放你自己决定吧,要改动一下,连续6格改成连续7格

没人理我也顶一下吧!
回复

使用道具 举报

发表于 2012-1-31 21:25 | 显示全部楼层    本楼为最佳答案   

  1. Sub a()
  2.     Dim arr(), j%, k%, l%, n%, s$, d As Object

  3.     Set d = CreateObject("scripting.dictionary")
  4.     arr = Range([c5], [c5].End(xlToRight))
  5.     n = 6    '连续的个数

  6.     For j = 1 To UBound(arr, 2) - n    '遍历列
  7.         For k = 1 To n    '遍历n(连续n个数)
  8.             s = arr(1, j + k - 1)
  9.             arr(1, j) = ""
  10.             
  11.             '把字符串s中的每个字符,一一加入字典
  12.             For l = 1 To Len(s)
  13.                 d(Mid(s, l, 1)) = d(Mid(s, l, 1)) + 1
  14.                 '如果这个数Mid(s, l, 1)被记录n次,那么就是要找的数。
  15.                 '就将它写入输出的数组(这里输入数组和输出数组,都是arr)
  16.                 If d(Mid(s, l, 1)) = n Then
  17.                     arr(1, j) = arr(1, j) & Mid(s, l, 1)
  18.                 End If
  19.             Next l

  20.         Next k
  21.         d.RemoveAll    '清零
  22.     Next j
  23.     [a12].Resize(1, UBound(arr, 2) - n) = arr
  24. End Sub
复制代码

是这样吗?
如果找到0个符合要求,就输出空值(“”)
如果找到1个符合要求,就输出那1个数。比如,符合条件的数是3,就输出"3"
如果找到多个符合要求,就连续输出多个。比如,符合条件的数是4、7、9,就输出"479"


回复

使用道具 举报

发表于 2012-1-31 21:32 | 显示全部楼层
必须说明下,因为看到楼主的单元格中的数,都是不重复连续数,这样写省事,可以用。
但假如是形如"122345"、"234445"这样的数,即字符串内有重复的话,5楼方法就不正确了。
回复

使用道具 举报

 楼主| 发表于 2012-1-31 23:53 | 显示全部楼层
爱疯 发表于 2012-1-31 21:32
必须说明下,因为看到楼主的单元格中的数,都是不重复连续数,这样写省事,可以用。
但假如是形如"122345" ...

你太有才了,是这样的,谢谢你!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-23 17:58 , Processed in 0.337128 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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