|
本帖最后由 today0427 于 2016-10-2 20:14 编辑
这题把我快弄头昏死,做完了,都变绿了,我也没办法,结果的行号和列号显示在V列和W列,每四个为一组,反正我测试了,每四个确实能组成平行四边形,楼主也没说清楚要求,我是把所有的平行四边形的可能性全部列出来了,有重复利用的单元格。
- Dim arr(), n&, brr(1 To 10000, 1 To 2), k&, h&
- Sub pxsbx() '平行四边形
- Dim rng As Range, rg As Range, i&
- e = Sheets("sheet2").[a65536].End(3).Row
- Set rng = Range("e11:t" & e)
- ReDim arr(1 To e, 1 To 2)
- For Each rg In rng
- If rg <> "" Then
- i = i + 1: arr(i, 1) = rg.Row: arr(i, 2) = rg.Column
- End If
- Next
- For n = 1 To UBound(arr) - 3
- Call r2(n)
- Next
- ' MsgBox k
- With Sheets("sheet2")
- For i = 1 To k
- .Cells(brr(i, 1), brr(i, 2)).Interior.ColorIndex = 4
- Next
- .[v13].Resize(k, 2).Clear
- .[v13].Resize(k, 2) = brr
- End With
- Erase brr: Erase arr: n = 0: h = 0: k = 0
- End Sub
- Function r2(n)
- Dim hc%, lc%, i&
- For i = n + 1 To n + 7
- If i < UBound(arr) - 2 Then
- hc = arr(i, 1) - arr(n, 1): lc = arr(i, 2) - arr(n, 2)
- Call r34(hc, lc, i)
- End If
- Next
- End Function
- Function r34(hc, lc, m)
- Dim i&, j&
- For i = m + 1 To n + 8
- For j = i + 1 To i + hc
- If arr(j, 1) - arr(n, 1) < =10 And arr(j, 1) - arr(i, 1) = hc And arr(j, 2) - arr(i, 2) = lc Then
- k = k + 1
- brr(k, 1) = arr(n, 1): brr(k, 2) = arr(n, 2)
- brr(k + 1, 1) = arr(m, 1): brr(k + 1, 2) = arr(m, 2)
- brr(k + 2, 1) = arr(i, 1): brr(k + 2, 2) = arr(i, 2)
- brr(k + 3, 1) = arr(j, 1): brr(k + 3, 2) = arr(j, 2)
- k = k + 3: Exit For
- End If
- Next
- Next
- End Function
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|