Страницы: 1
RSS
Макрос: перебрать все возможные комбинации
 
Друзья,

Появилась задача, которую я не могу корректно сформулировать в коде VBA.
ДАНО:
Есть диапазон в колонке А. Диапазон содержит нули.


Высота колнки А может меняться. Для примера, я сделал 3 ячейки.
В этих 3х ячейках надо по очереди перебрать все возможные варианты комбинации единиц и нулей.
Для данного примера, это 8 возможных вариантом.

Но если высота данных 10, 20, 30 то задача усложняется.

И я не могу этот алгоритм написать в VBA.
Может кто это уже делал?
Помогите с кодом на перебор.

Поиском пользовался. Но запрос сложно унифицировать в поиске, поэтому, я не нашел того что искал... =(
Заранее благодарен.
 
Цитата
SanShiney написал:
Но если высота данных 10, 20, 30 то задача усложняется.
Вы даже не представляете насколько задача усложняется.

2 в степени 30 это 1 073 741 824.
А в Excel только 16 384 столбца (2 в 14-й степени).
 
Цитата
МатросНаЗебре написал: А в Excel только 16 384 столбца (2 в 14-й степени).
Согласен!
Это большая цифра. Я понимаю, что это должно делаться в VBA массиве.
Там это возможно.
Но, всё же, я не могу понять, как это корректно реализовать.
 
Зачем вам такой перебор? Надо выводить каждый разряд в отдельную ячейку или нет?
Вроде все просто - в цикле переводите десятичное число от 0 до 2^n в двоичное, где n-ваше начальное кол-во нулей.
Изменено: Сергей Беляев - 27.09.2016 17:32:20
 
тут файл на 19 знакомест
524288 вариантов (он довольно тяжелый)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
SanShiney написал: это должно делаться в VBA массиве.
Подумайте, куда Вы хотите результат вывести.
В столбцы, как Вы указали, не получится.
 
Цитата
Сергей Беляев написал: Зачем вам такой перебор? Надо выводить каждый разряд в отдельную ячейку или нет?
Надо каждый вариант подставить в колонку A.
На примере, вариант в колонке C подставить в колонку А, затем D в А, E в А и т.д.

Цитата
Сергей Беляев написал: в цикле переводите десятичное число от 0 до 2^n в двоичное, где n-ваше начальное кол-во нулей.
Я понял, что через цикл надо. Иначе никак. Но про десятичное число - не понял... =(
 
Цитата
МатросНаЗебре написал:
В столбцы, как Вы указали, не получится.
Как сказал чуть выше, хочу вывести каждый результат в колонку А. Затем затереть его следующим.
Говоря проще, хочу перебрать возможные варианты. Начиная с 1 до последнего.

Сама по себе задача кажется безсмысленной. Но это часть большей задачи. А её целиком приводить не вижу смысла. Хотя, финальным результатом заделюсь. Думаю, он может быть полезен.
 
vikttur, извиняюсь.
с телеофна писал. не туда щёлкнул, видимо...
 
Какой смысл выводить результат, если его сразу же затирать? Если будете прятать свою задумку, то и помощь получите соответствующую. Непонятно ведь.
 
файл см. сообщение #5
отмечаете по 16 тыс. строк и специальной вставкой (с транспонированием) копируете в другой файл, потом удаляете 1 -ю колонку все будет сдвигаться не ее место
и так 33 раза...
20 и более результаты нужно выводить напрямую в файл, в Еxcel - не влезут(((
а с 21, кажется, и массив такого размера уже не получиться обьявить - только прямо в файл))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Смысл в следующем:
Есть цифра. Она является суммой нескольих цифр, представленных в массиве.
Надо найти из чего состоит эта сумма. На примере ниже, я ищу цифру в зелённой ячейке.


Файл рабочего примера в приложении.
Изменено: SanShiney - 27.09.2016 18:20:11 (Забыл приложения)
 
Ігор Гончаренко,
Вышел домой. =) Дома гляну, первым делом.
 
Подбор суммы
Страницы: 1
Наверх