33,010
社区成员
发帖
与我相关
我的任务
分享
Dim arr, arr1, q
Sub main()
Dim n%, r%, s%
Dim strTemp As String
Dim intTemp
intTemp = 9E+307
n = Range("a65535").End(xlUp).Row - 1
r = [d2]
q = 0
ReDim arr(1 To nx(n) / nx(r) / nx(n - r))
ReDim arr1(1 To nx(n) / nx(r) / nx(n - r))
cmb n, r, ""
For l = 1 To q
strTemp = ""
For k = 1 To r
strTemp = Range("a" & Split(arr(l), " ")(k - 1) + 1) & "+" & strTemp
Next
arr(l) = strTemp & 0
If Abs(Evaluate(strTemp & 0) - [d1]) < intTemp Then
intTemp = Abs(Evaluate(strTemp & 0) - [d1])
s = l
End If
arr1(l) = Evaluate(strTemp & 0)
Next
[i2:i65536].ClearContents
[i2].Resize([d2], 1) = Application.Transpose(Split(arr(s), "+"))
End Sub
Sub cmb(ByVal n As Integer, ByVal r As Integer, ByVal s As String)
Dim i%
If r = 1 Then
For i = 1 To n
q = q + 1
arr(q) = i & " " & s
Next i
Exit Sub
ElseIf n = r Then
q = q + 1
For i = 1 To n
arr(q) = arr(q) & i & " "
Next i
arr(q) = arr(q) & s
Exit Sub
End If
cmb n - 1, r, s
cmb n - 1, r - 1, n & " " & s
End Sub
Function nx(n)
Dim i%
nx = 1
For i = 2 To n
nx = nx * i
Next i
End Function
Sub test()
MsgBox Split("1-2-3-4-", "-")(4)
End Sub