Страницы: 1
RSS
Построение числовых комбинаций для лото из заданных чисел
 
Добрый день.Подскажите пожалуйста  как с помощью VBA сгенерировать комбинации чисел в порядке возрастания 6 из 45 или 5 из 36.Числа должны браться из таблицы.Их там может быть и 10 или 40 и тд.При нажатии на кнопку 1 выдавал бы комбинации 6 из 45.А при нажатии на кнопку 2 выдавал бы 5 из 36.Если в таблице будут присутствовать два одинаковых числа или 3 то считал бы как одно число для  подбора.
 
Доброе время суток.
Цитата
ИВАН19121979 написал:
как с помощью VBA
Пример
Код
Public Sub do5from36()
    Dim vItem, vData, pDict As Object, tmp As Long
    Dim vLast As Long, p1 As Long, p2 As Long, i As Long
    vData = ActiveSheet.Range("B3:F12")
    Set pDict = CreateObject("Scripting.Dictionary")
    For Each vItem In ActiveSheet.Range("B3:F12")
        If Application.WorksheetFunction.IsNumber(vItem) Then pDict(vItem) = Empty
    Next
    vData = pDict.keys
    vLast = UBound(vData)
    For i = 0 To 10000
        p1 = CLng(Math.Rnd * vLast)
        p2 = CLng(Math.Rnd * vLast)
        tmp = vData(p1)
        vData(p1) = vData(p2)
        vData(p2) = tmp
    Next
    ReDim vItem(1 To 1, 1 To 5)
    For i = 0 To 4
        vItem(1, i + 1) = vData(i)
    Next
    ActiveSheet.Range("R3:V3").Value = vItem
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("R3:V3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("R3:V3")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Извиняюсь не правильно описал ситуацию.Задача стоит в том ,чтоб при нажатии кнопки 1 или 2.Выводились все возможные комбинации чисел 6 из 45 или 5 из 36.В колонку 1
 
Цитата
ИВАН19121979 написал:
все возможные комбинации чисел 6 из 45
А таких  8 145 060 - ячеек в столбце 1 всего  1 048 576.
Цитата
ИВАН19121979 написал:
В колонку 1
Через запятую?
 
В разные колонки и можно через запятую
 
и так...
первая комбинация 123456
записывается:
в  А1 как число 123456
как строка 1 2 3 4 5 6 или 1,2,3,4,5,6 или еще как-то
или вообще:
в А1 - 1, в В1 - 2, в С1 - 3, в D1 - 4, в Е1 - 5 и наконец в F1 - 6?
или Вам по-барабану? и любой вариант хорош?
Изменено: Ігор Гончаренко - 29.01.2019 15:41:42
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
https://www.planetaexcel.ru/forum/index.php?FID=1&PAGE_NAME=message&TID=63185
 
Что надо изменить в коде макроса.Чтоб при заполнении одной колонки он записывал данные в следующей колонке.А также  не записывал повторяющие комбинации чисел
 
Ігор Гончаренко  желательно a1 - 1, в В1 - 2, в С1 - 3, в D1 - 4, в Е1 - 5.
MCH  мне нужно из указанных чисел в таблице.
 
см.вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко.Спасибо.Это то что нужно.
Но можно ли что нибудь подправить в макросе.А то заместо некоторых комбинаций пишет н/д.Это когда много чисел в таблице данных
 
Ігор Гончаренко.Ваш макрос в какой то момент заместо чисел  выдает н/д.И можно ли при заполнении первой колонки следующие комбинации вставлять в другие колонки.
 
можно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх