|
发表于 2012-1-31 21:25
|
显示全部楼层
本楼为最佳答案
- Sub a()
- Dim arr(), j%, k%, l%, n%, s$, d As Object
- Set d = CreateObject("scripting.dictionary")
- arr = Range([c5], [c5].End(xlToRight))
- n = 6 '连续的个数
- For j = 1 To UBound(arr, 2) - n '遍历列
- For k = 1 To n '遍历n(连续n个数)
- s = arr(1, j + k - 1)
- arr(1, j) = ""
-
- '把字符串s中的每个字符,一一加入字典
- For l = 1 To Len(s)
- d(Mid(s, l, 1)) = d(Mid(s, l, 1)) + 1
- '如果这个数Mid(s, l, 1)被记录n次,那么就是要找的数。
- '就将它写入输出的数组(这里输入数组和输出数组,都是arr)
- If d(Mid(s, l, 1)) = n Then
- arr(1, j) = arr(1, j) & Mid(s, l, 1)
- End If
- Next l
- Next k
- d.RemoveAll '清零
- Next j
- [a12].Resize(1, UBound(arr, 2) - n) = arr
- End Sub
复制代码
是这样吗?
如果找到0个符合要求,就输出空值(“”)
如果找到1个符合要求,就输出那1个数。比如,符合条件的数是3,就输出"3"
如果找到多个符合要求,就连续输出多个。比如,符合条件的数是4、7、9,就输出"479"
|
|