|
- Sub grf()
- arr = Range("a11:E" & [a65536].End(3).Row): n = UBound(arr)
- brr = Range("g11:h" & [g65536].End(3).Row)
- ReDim crr(1 To UBound(brr), 1 To 2)
- Set d = CreateObject("scripting.dictionary")
- For i = 1 To UBound(brr) '以两数为key,以行号相连为item
- x1 = brr(i, 1): x2 = brr(i, 2)
- x = x1 & "," & x2
- For ia = 1 To n
- k = 0
- For ja = 1 To UBound(arr, 2)
- If arr(ia, ja) = x1 Or arr(ia, ja) = x2 Then k = k + 1
- Next
- If k = 2 Then d(x) = d(x) & "," & ia
- Next
- Next
-
- For i = 1 To UBound(brr)
- x1 = brr(i, 1): x2 = brr(i, 2)
- x = x1 & "," & x2
- If Not d.exists(x) Then '如果两数在数组中各行都不存在,最大遗漏=最近遗漏=数组行数
- crr(i, 1) = n
- crr(i, 2) = n
- Else
- d(x) = 0 & d(x) & "," & n + 1 '加头加尾,以计算最大遗漏
- xrr = Split(d(x), ",")
- crr(i, 1) = n - xrr(UBound(xrr) - 1) '最近遗漏
- tmp = 0
- For j = 0 To UBound(xrr) - 1 '从相隔数中取最大值
- tmp = IIf(xrr(j + 1) - xrr(j) > tmp, xrr(j + 1) - xrr(j), tmp)
- Next
- crr(i, 2) = tmp - 1
- End If
- Next
-
- [k11].Resize(UBound(crr), 2) = crr
- End Sub
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|