1

Столбцы A, B, C имеют значения как,

A     B     C
--------------
A     A     A
B     B     B
C     C     C
D     D     E
E     E     E

Как рандомизировать внутри каждого столбца, чтобы ни одна строка не содержала один и тот же элемент?

Например, на ручное решение может быть -

A     B     C
--------------
A     E     C
B     D     E
C     B     A
D     C     E
E     A     B

1 ответ1

-1

Мне не известно о каком-либо диалоге "Перестановка ячеек столбца с ограничениями" в Microsoft Excel. Как указывает Бурги, вы можете написать скрипт, чтобы заставить Execel делать именно то, что вы хотите.

Если вы никогда ранее не писали сценарий и не занимались программированием, выделите хотя бы один день. Это огромные затраты времени, но они окупятся в долгосрочной перспективе. Ваши новые навыки позволят вам более эффективно решать другие проблемы в Excel.

Начните с написания скрипта, который проверяет, конфликтует ли ячейка B1 с ячейкой A1. Затем напишите скрипт, который меняет B1 с другой ячейкой с B2 на B5. Затем примените к свопу ограничение, согласно которому новое содержимое для B1 разрешает предыдущий конфликт с A1. Если вы хотите, чтобы это было более случайным, не просто выберите первую подходящую ячейку, а сделайте случайный выбор из всех подходящих ячеек. Один из способов сделать это - сначала подсчитать, сколько ячеек соответствуют ограничениям, получить случайное целое число i в этом диапазоне, а затем снова просмотреть столбец B, на этот раз останавливаясь на i-й ячейке, которая подходит для замены. Затем напишите цикл, который повторяется по всем ячейкам столбца B, и измените свой предыдущий код так, чтобы он работал не только для B1, но и для любой другой ячейки в столбце B. Поменяйте местами только с ячейками, расположенными ниже. Замена уже проверенных ячеек будет означать, что вам придется проверять эти ячейки снова, и вы можете в конечном итоге бегать кругами, никогда не находя решения, даже если решение существует. Как только вы освоите это, вы легко сможете расширить свой сценарий для обработки столбца C. Наконец, узнайте, как сообщать об ошибках, например, что подходящая ячейка недоступна. (6 Es в вашем примере будет подходящим тестовым примером.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .