|
数组换成静态的。
6000*6000/2,数组大小36000000/2,这个数组确实有点大了。- Sub 同一基站方向小于20度()
- '匹配数字
- Dim arr, arrResult(1 To 655535, 1 To 2)
- Dim lRecord As Long
- Dim i As Long, j As Long
- Dim str1 As String
- Dim lAbs As Long
- Dim objRegExp1 As Object, objRegExp2 As Object
- Dim item1, item2
- Set objRegExp1 = CreateObject("VBScript.regExp")
- Set objRegExp2 = CreateObject("VBScript.regExp")
- With objRegExp1
- .Global = True
- .Pattern = "\d+"
- End With
- With objRegExp2
- .Global = True
- .Pattern = "\d+"
- End With
- '源数据
- With Sheet2
- arr = .Range("a1").CurrentRegion
- End With
- '结果数组
- 'ReDim arrResult(1 To 655535, 1 To 2)
- arrResult(1, 1) = "site"
- arrResult(1, 2) = "角度差"
- '标题占一行
- lRecord = 1
- '数组行循环
- For i = LBound(arr) + 1 To UBound(arr) - 1
- str1 = Mid(arr(i, 1), 3, 4)
- For j = i + 1 To UBound(arr)
- '相同的循环并且要求行值
- If (str1 = Mid(arr(j, 1), 3, 4)) Then
- For Each item1 In objRegExp1.Execute(arr(i, 3))
- For Each item2 In objRegExp2.Execute(arr(j, 3))
- lAbs = Abs(Val(item1) - Val(item2))
- If lAbs <= 20 Then
- lRecord = lRecord + 1
- arrResult(lRecord, 1) = arr(i, 1) & "-" & arr(j, 1)
- arrResult(lRecord, 2) = lAbs
- End If
- Next
- Next
- End If
- Next
- Next
- With Sheet3
- .Range("f1").Resize(lRecord, 2).Value = arrResult
- End With
- MsgBox "整理完成", vbInformation + vbOKOnly
- End Sub
复制代码 |
评分
-
查看全部评分
|