Добрый день. Обшарил весь форум в поисках решения, нашел несколько подходящих, но реализация не вполне та,которую я хочу. Моё знание VBA оставляет желать лучшего, поэтому прошу помощи. По делу: Требуется реализовать сочетания из n по k без повторений. C(nk) = n! / k! (n-k)! - так определяется число сочетаний без повторений. Нашел на форуме подходящее решение (post_64644.xls). Реализовано через циклы, но количество предопределено 6 из 8. И тут главный вопрос как реализовать, скажем, ввод десяти значений n, потом k равное трем и получить ответ. Иначе говоря, какой будет код если число циклов т.е. k не предопределено? Буду благодарен за помощь.
Sub MyCombin()
Dim a&(), i&, j&, m&, n&, p&
n = Val(InputBox("n =", , 10))
m = Val(InputBox("m =", , 3))
If n < m Or m < 1 Then Exit Sub
ReDim a&(1 To m), b&(1 To WorksheetFunction.Combin(n, m), 1 To m)
For i = 1 To m: a(i) = i: Next i
If m = n Then p = 1 Else p = m
Range("a1").CurrentRegion.ClearContents
Do
j = j + 1
For i = 1 To m: b(j, i) = a(i): Next i
If a(m) = n Then p = p - 1 Else p = m
If p Then
For i = m To p Step -1
a(i) = a(p) + i - p + 1
Next i
End If
Loop While p
[a1].Resize(UBound(b), m) = b
End Sub