MS Excel: рандомизировать столбец строк в сетку строк

У меня есть лист MS Excel со 100 именами в одном столбце.

На другом листе у меня есть сетка ячеек 10 x 10, из которой я хочу случайным образом присвоить имя из столбца.

Есть ли относительно простой способ добиться этого или он будет включать работу с типом VBA?

2 ответа
2

Это можно сделать с помощью вспомогательного столбца, который создает случайное число от 1 до 100. С вашими именами в A2: A101. В B2 введите:

=AGGREGATE(15,7,ROW($1:$100)/(COUNTIFS($B$1:B1,ROW($1:$100))=0),RANDBETWEEN(1,100-COUNT($B$1:B1)))

И скопируйте.

Будет случайным образом выбрано число от 1 до 100 с буквой k, а AGGREGATE будет RANDBETWEEN(1,100-COUNT($B$1:B1)). В то время как COUNTIFS($B$1:B1,ROW($1:$100))=0 следит за тем, чтобы мы не получали дубликатов.

введите описание изображения здесь

Затем мы используем ИНДЕКС / ПОИСКПОЗ, чтобы найти значение. Поместите это в верхний правый угол сетки:

=INDEX($A:$A,MATCH((ROW($A1)-1)*10+COLUMN(A$1),$B:$B,0))

Как это лекарство снова и снова, он ищет 1-10 в первом ряду, 11-20 во втором и так далее. И поскольку столбец подстановки рандомизирован, он будет случайным.

Затем скопируйте 10 и 10 вниз:

введите описание изображения здесь


Если у вас есть Office 365 Excel, то ИНДЕКС / ПОИСКПОЗ можно заменить этой динамической версией, которая автоматически выведет 10×10:

=INDEX(A:A,MATCH(SEQUENCE(10,10),B:B,0))

    Предполагая, что имена хранятся в столбце A:

    1. В столбце B примените формулу =RAND()
    2. Скопируйте и вставьте полученные значения в столбец B, перезаписав формулу.
    3. В столбце C примените формулу =RANK(B2, $B$2:$B$101). Это позволит вам присвоить каждому имени номер от 1 до 100.
    4. Над сеткой 10х10 добавьте числа от 1 до 10. Сделайте то же самое слева от сетки 10х10. Они будут служить заголовками строк и столбцов.

    Теперь, предполагая, что заголовки ваших строк находятся в E2:E11 и заголовки ваших столбцов находятся в F1:O1

    1. Введите формулу =INDEX($A$2:$A$101, MATCH(($E2-1)*10+F$1, $C$2:$C$101,0)) в ячейку F2 и перетащите по сетке 10×10

    Пример решения

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *