|
发表于 2016-4-20 14:15
|
显示全部楼层
本楼为最佳答案
看懂了,感觉比较难。凑了一个,结果和模拟结果略有不同。- Dim xs
- Sub tq()
- Set d = CreateObject("scripting.dictionary")
- arr = Range("h1:k" & [h65536].End(3).Row)
- For i = 2 To UBound(arr) - 1
- x = arr(i, 1)
- For j = i + 1 To UBound(arr)
- y = arr(j, 1)
- If ISOK(x, y) Then
- xrr = Split(xs, ",")
- If arr(i, 2) = "" Then arr(i, 2) = xrr(0): arr(i, 3) = xrr(1): arr(i, 4) = y
- If arr(j, 2) = "" Then arr(j, 2) = xrr(0): arr(j, 3) = xrr(2): arr(j, 4) = x
- End If
- Next
- Next
- [L1].Resize(UBound(arr), 4) = arr
- End Sub
- Function ISOK(a, b) As Boolean '是否相似,并返回x,y的相似数xs
- xs = ""
- x = a: y = b
- For i = 1 To Len(x)
- p = Mid(x, i, 1)
- For j = 1 To Len(y)
- If Mid(y, j, 1) = p Then
- xs = xs & p
- Mid(y, j, 1) = "A"
- Mid(x, i, 1) = "A"
- Exit For
- End If
- Next
- Next
- If Len(xs) = 5 Then
- ISOK = True
- xs = Replace(xs & "," & x & "," & y, "A", "") 'Like "T5689,3,7",第一位为相似数,第二位为第一个不同数,第三位为第二个不同数
- End If
- End Function
复制代码 |
评分
-
查看全部评分
|