Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2013, 21:35   #1
Deni3
Новичок
Джуниор
 
Регистрация: 15.10.2013
Сообщений: 2
По умолчанию Варианты сочетаний из n по k

Добрый день.
Требуется макрос реализации сочетаний из n по k без повторений.
Например n = 5 (1,2,3,4,5), а k = 3.
В итоге:
1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5
Можно реализовать через цикл, а вернее 3 цикла

For i = 1 To 3
For j = i + 1 To 4
For k = j + 1 To 5
Cells(myRows, 1) = i
Cells(myRows, 2) = j
Cells(myRows, 3) = k
myRows = myRows + 1
Next k
Next j
Next i
(код украден)

Но как сделать если k будет введено до. т.е. k не будет предопределено?
Deni3 вне форума Ответить с цитированием
Старый 21.10.2013, 07:07   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
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
чем вам не решение? на планете уже решили

ахаха...причем вам же и решили.
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 21.10.2013 в 09:12.
SaLoKiN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация сочетаний el_gato_de_Ch Общие вопросы C/C++ 1 26.06.2013 21:42
Перебор сочетаний Orjanruusu PHP 2 12.05.2012 11:42
Перебор неповторяющихся сочетаний David Villa Общие вопросы C/C++ 3 08.05.2012 10:53
формула суммы сочетаний HyperSonik Microsoft Office Excel 4 29.01.2012 02:36
Найти количество сочетаний из n по k и вывести все комбинации этих сочетаний на экран Рон99 Паскаль, Turbo Pascal, PascalABC.NET 2 14.12.2011 00:05