Столкнулась с проблемой, которую сама не могу решить. Прошу помощь.
Задача- сгенерировать все возможные комбинации, согласно выбранным условиям.
Условие- указать название колонок и количество значений в каждой колонке. Например, комбинация будет состоять из одного значения в кол1, двух значений из кол2, двух значений из кол3. Итого, комбинация состоит из 5 значений.
Поиском воспользовалась. Ответа не нашла, т.к. комбинация состоит из неравного количества значений в колонках.
Заранее благодарю за помощь. Алина
Добрый День Всем.
Столкнулась с проблемой, которую сама не могу решить. Прошу помощь.
Задача- сгенерировать все возможные комбинации, согласно выбранным условиям.
Условие- указать название колонок и количество значений в каждой колонке. Например, комбинация будет состоять из одного значения в кол1, двух значений из кол2, двух значений из кол3. Итого, комбинация состоит из 5 значений.
Поиском воспользовалась. Ответа не нашла, т.к. комбинация состоит из неравного количества значений в колонках.
Алина_, в примере лучше всего указывать как Вы хотите видеть результат, чтобы было понятно, что Вы подразумеваете под комбинацией. И Ваш вопрос формулами если можно решить, то кол-во протягиваемых, к примеру, формул Вы будете сами рассчитывать. Эта тема ближе к разделу по макросам.
Алина_, в примере лучше всего указывать как Вы хотите видеть результат, чтобы было понятно, что Вы подразумеваете под комбинацией. И Ваш вопрос формулами если можно решить, то кол-во протягиваемых, к примеру, формул Вы будете сами рассчитывать. Эта тема ближе к разделу по макросам.JayBhagavan
Языком ты или построишь жизнь,или разрушишь ее до основания.Думайте что говорите.(с)А.Хакимов
Задачу можно решить на макросах, но даже с такой небольшой выборкой исходных данных получается 450 вариантов генераций (=ЧИСЛКОМБ(3;1)*ЧИСЛКОМБ(6;2)*ЧИСЛКОМБ(5;2)) Каково количество исходных данных?
Если имеется только 5 столбцов с числами, то можно сделать небольшой макрос по составлению всех сочетаний.
Задачу можно решить на макросах, но даже с такой небольшой выборкой исходных данных получается 450 вариантов генераций (=ЧИСЛКОМБ(3;1)*ЧИСЛКОМБ(6;2)*ЧИСЛКОМБ(5;2)) Каково количество исходных данных?
Если имеется только 5 столбцов с числами, то можно сделать небольшой макрос по составлению всех сочетаний.MCH
Texgen, Я извиняюсь до 8 столбцов, А вообще задача такая нужно получить все комбинации неповторяющихся 8 чисел от 1 до 20 всего 125900 комбинаций, при условии 1,2,3,4,5,6,7,8 и 8,7,6,5,4,3,2,1 и 2,1,3,4,5,6,7,8 . т. д. одна и таже комбинация
Texgen, Я извиняюсь до 8 столбцов, А вообще задача такая нужно получить все комбинации неповторяющихся 8 чисел от 1 до 20 всего 125900 комбинаций, при условии 1,2,3,4,5,6,7,8 и 8,7,6,5,4,3,2,1 и 2,1,3,4,5,6,7,8 . т. д. одна и таже комбинацияTexgen
А вообще задача такая нужно получить все комбинации неповторяющихся 8 чисел от 1 до 20 всего 125900 комбинаций
У меня получается 125970 вариантов сочетаний (ЧИСЛКОМБ(20;8) = 125970)
[vba]
Код
Sub MyCombin() Dim a&(), i&, j&, m&, n&, p& n = Val(InputBox("n =", , 20)) m = Val(InputBox("m =", , 8)) 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
[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
А вообще задача такая нужно получить все комбинации неповторяющихся 8 чисел от 1 до 20 всего 125900 комбинаций
У меня получается 125970 вариантов сочетаний (ЧИСЛКОМБ(20;8) = 125970)
[vba]
Код
Sub MyCombin() Dim a&(), i&, j&, m&, n&, p& n = Val(InputBox("n =", , 20)) m = Val(InputBox("m =", , 8)) 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
[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
MCH, Спасибо , 125970 это точное количество комбинаций, а можно ли их все увидеть в Exe файле? Если да, то приложите пример в сообщение, очень хочу разобраться в этом, но пока только начинаю для меня все новое (сложное)
MCH, Спасибо , 125970 это точное количество комбинаций, а можно ли их все увидеть в Exe файле? Если да, то приложите пример в сообщение, очень хочу разобраться в этом, но пока только начинаю для меня все новое (сложное)Texgen