|
楼主 |
发表于 2012-1-27 23:37
|
显示全部楼层
- Public drr(3 To 665536, 1 To 2), m, cnt, b
- Sub test2()
- n = [a1].End(4).Row
- ReDim arr(1 To n, 1 To 2)
- For i = 1 To n
- arr(i, 1) = Cells(i, 1)
- arr(i, 2) = Cells(i, 1)
- Next
- b = [d1]
- [f1] = 0
-
- m = 2
- cnt = 0
- zhjs arr, n
-
- [e1] = cnt
- [d3:e65536] = ""
- [d3].Resize(m, 2) = drr
- Erase drr
-
- End Sub
- Sub zhjs(arr(), n)
- ReDim brr(1 To n - 1, 1 To 2)
- For i = 1 To n - 1
- For j = i + 1 To n
- If n > 2 Then
- l = 0
- For k = 1 To n
- If k <> i And k <> j Then
- l = l + 1
- brr(l, 1) = arr(k, 1)
- brr(l, 2) = arr(k, 2)
- End If
- Next
- End If
-
- For f = 1 To 5
-
- If f = 4 And arr(i, 1) = 0 Then
- [f1] = [f1] + 1
- ' MsgBox arr(i, 2)
- ' [a1].End(4) = [a1].End(4) + 1
- ' End
- ElseIf f = 5 And arr(j, 1) = 0 Then
- [f1] = [f1] + 1
- ' MsgBox arr(j, 2)
- ' [a1].End(4) = [a1].End(4) + 1
- ' End
- Else
- brr(n - 1, 1) = js(arr(i, 1), arr(j, 1), f)
- brr(n - 1, 2) = jg(arr(i, 2), arr(j, 2), f)
- If n = 2 Then
- cnt = cnt + 1
- If Round(brr(n - 1, 1), 12) = b Then
- m = m + 1
- drr(m, 1) = brr(n - 1, 1)
- drr(m, 2) = brr(n - 1, 2)
- End If
- Else
- zhjs brr, n - 1
- End If
- End If
- Next
- Next
- Next
- End Sub
- Function js(n1, n2, f)
- Select Case f
- Case 1
- js = n1 + n2
- Case 2
- If n1 > n2 Then js = n1 - n2 Else js = n2 - n1
- Case 3
- js = n1 * n2
- Case 4
- If n1 = 0 Then js = "!0" Else js = n2 / n1
- Case 5
- If n2 = 0 Then js = "!0" Else js = n1 / n2
- End Select
- End Function
- Function jg(n1, n2, f)
- Select Case f
- Case 1
- jg = "(" & n1 & "+" & n2 & ")"
- Case 2
- jg = "(" & n2 & "-" & n1 & ")"
- Case 3
- jg = "(" & n1 & "*" & n2 & ")"
- Case 4
- If n1 = 0 Then jg = "/Zero" Else jg = "(" & n2 & "/" & n1 & ")"
- Case 5
- If n2 = 0 Then jg = "/Zero" Else jg = "(" & n1 & "/" & n2 & ")"
- End Select
- End Function
复制代码 |
|