Оглавление
Урок посвящен тому, как сделать случайную выборку в Excel без повторений. Вы найдете решения для Excel 365, Excel 2021, Excel 2019 и более ранних версий.
Некоторое время назад мы описали несколько различных способов случайного выбора в Excel. Большинство из этих решений опираются на функции RAND и RANDBETWEEN, которые могут генерировать дубликаты чисел. Следовательно, ваша случайная выборка может содержать повторяющиеся значения. Если вам нужен случайный выбор без дубликатов, используйте подходы, описанные в этом руководстве.
Excel случайный выбор из списка без дубликатов
Работает только в Excel 365 и Excel 2021, которые поддерживают динамические массивы.
Чтобы сделать случайный выбор из списка, в котором нет повторений, используйте эту общую формулу:
INDEX(SORTBY( данные , RANDARRAY(ROWS( данные ))), SEQUENCE( n ))Где n это желаемый размер выделения.
Например, чтобы получить 5 уникальных случайных имен из списка в A2:A10, используйте следующую формулу:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(5))
Для удобства можно ввести размер выборки в заранее определенную ячейку, например, C2, и передать ссылку на ячейку функции SEQUENCE:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(C2))
Как работает эта формула:
Вот высокоуровневое объяснение логики формулы: функция RANDARRAY создает массив случайных чисел, SORTBY сортирует исходные значения по этим числам, а INDEX извлекает столько значений, сколько указано в SEQUENCE.
Ниже приводится подробная разбивка:
Функция ROWS подсчитывает, сколько строк содержит ваш набор данных, и передает это количество функции RANDARRAY, чтобы она могла сгенерировать такое же количество случайных десятичных чисел:
RANDARRAY(ROWS(A2:C10))
Этот массив случайных десятичных чисел используется в качестве массива "сортировки по" функцией SORTBY. В результате ваши исходные данные перемешиваются случайным образом.
Из случайно отсортированных данных вы извлекаете выборку определенного размера. Для этого вы передаете перетасованный массив в функцию INDEX и запрашиваете извлечение первого массива. N значения с помощью функции SEQUENCE, которая выдает последовательность чисел от 1 до N Поскольку исходные данные уже отсортированы в случайном порядке, нам не важно, какие позиции извлекать, важно только количество.
Выбор случайных строк в Excel без дубликатов
Работает только в Excel 365 и Excel 2021, которые поддерживают динамические массивы.
Чтобы выбрать случайные строки без повторений, постройте формулу таким образом:
INDEX(SORTBY( данные , RANDARRAY(ROWS( данные ))), SEQUENCE( n ), {1,2,...})Где n это размер выборки, а {1,2,...} - номера столбцов для извлечения.
В качестве примера, давайте выберем случайные строки из A2:C10 без дубликатов, основываясь на размере выборки в F1. Поскольку наши данные находятся в 3 столбцах, мы вводим в формулу константу массива: {1,2,3}
=INDEX(SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10))), SEQUENCE(F1), {1,2,3})
И получите следующий результат:
Как работает эта формула:
Формула работает по той же логике, что и предыдущая. Небольшое изменение, которое имеет большое значение, заключается в том, что вы указываете оба параметра row_num и номер_столбца аргументы для функции INDEX: row_num поставляется SEQUENCE и номер_столбца константой массива.
Как сделать случайную выборку в Excel 2010 - 2019
Поскольку только Excel для Microsoft 365 и Excel 2021 поддерживают динамические массивы, функции динамических массивов, использованные в предыдущих примерах, работают только в Excel 365. Для других версий вам придется искать другое решение.
Предположим, вам нужен случайный выбор из списка в A2:A10. Это можно сделать с помощью двух отдельных формул:
- Генерируйте случайные числа с помощью формулы Rand. В нашем случае мы вводим ее в B2, а затем копируем вниз в B10:
=RAND()
- Извлеките первое случайное значение с помощью приведенной ниже формулы, которую введите в E2:
=INDEX($A$2:$A$10, RANK.EQ(B2, $B$2:$B$10) + COUNTIF($B$2:B2, B2) - 1)
- Скопируйте приведенную выше формулу в столько ячеек, сколько случайных значений вы хотите выбрать. В данном примере нам нужно 4 имени, поэтому мы скопируем формулу с E2 по E5.
Готово! Наша случайная выборка без дубликатов выглядит следующим образом:
Как работает эта формула:
Как и в первом примере, вы используете функцию INDEX для извлечения значений из столбца A на основе случайных номеров строк. Разница заключается в том, как вы получаете эти номера:
Функция RAND заполняет диапазон B2:B10 случайными десятичными числами.
Функция RANK.EQ вычисляет ранг случайного числа в заданном ряду. Например, в E2 функция RANK.EQ(B2, $B$2:$B$10) ранжирует число в B2 относительно всех чисел в B2:B10. При копировании в E3 относительная ссылка B2 меняется на B3 и возвращает ранг числа в B3, и так далее.
Функция COUNTIF определяет, сколько вхождений заданного числа есть в указанных ячейках. Например, в E2 функция COUNTIF($B$2:B2, B2) проверяет только одну ячейку - саму B2, и возвращает 1. В E5 формула меняется на COUNTIF($B$2:B5, B5) и возвращает 2, потому что B5 содержит то же значение, что и B2 (обратите внимание, это только для того, чтобы лучше объяснить логику формулы; на небольшом наборе данных шансы получитьдублирование случайных чисел близко к нулю).
В результате для всех первых вхождений COUNTIF возвращает 1, из которого вычитается 1 для сохранения исходного рейтинга. Для вторых вхождений COUNTIF возвращает 2. Вычитая 1, вы увеличиваете рейтинг на 1, предотвращая таким образом дублирование рангов.
Например, для B2 RANK.EQ возвращает 1. Поскольку это первое вхождение, COUNTIF также возвращает 1. RANK.EQ + COUNTIF дает 2. А - 1 восстанавливает ранг 1.
Теперь посмотрим, что произойдет в случае второго вхождения. Для B5 RANK.EQ также возвращает 1, а COUNTIF возвращает 2. Сложив их, вы получите 3, из которых вычтите 1. В качестве конечного результата вы получите 2, что представляет собой ранг числа в B5.
Звание присваивается row_num аргумент функции INDEX, и она выбирает значение из соответствующей строки (аргумент номер_столбца Если бы не функция COUNTIF, RANK.EQ выдал бы 1 для B2 и B5, что заставило бы INDEX дважды вернуть значение из первой строки (Andrew).
Как предотвратить изменение случайной выборки в Excel
Поскольку все функции рандомизации в Excel, такие как RAND, RANDBETWEEN и RANDARRAY, являются непостоянными, они пересчитываются при каждом изменении на рабочем листе. В результате ваша случайная выборка будет постоянно меняться. Чтобы этого не произошло, используйте функцию Paste Special> Values для замены формул статическими значениями. Для этого выполните следующие действия:
- Выделите все ячейки с вашей формулой (любой формулой, содержащей функции RAND, RANDBETWEEN или RANDARRAY) и нажмите Ctrl + C, чтобы скопировать их.
- Щелкните правой кнопкой мыши выбранный диапазон и нажмите Специальная вставка > Значения В качестве альтернативы нажмите Shift + F10, а затем V , что является ярлыком для вышеупомянутой функции.
Подробные шаги см. в разделе Как преобразовать формулы в значения в Excel.
Произвольный выбор в Excel: строки, столбцы или ячейки
Работает во всех версиях Excel 365 до Excel 2010.
Если в вашем Excel установлен наш пакет Ultimate Suite, то вы можете делать случайную выборку с помощью щелчка мыши вместо формулы. Вот как это делается:
- На Инструменты Ablebits вкладка, нажмите Рандомизировать > Выбрать случайным образом .
- Выберите диапазон, из которого вы хотите отобрать образец.
- На панели надстройки выполните следующие действия:
- Выберите, хотите ли вы выбрать случайные строки, столбцы или ячейки.
- Определите размер выборки: это может быть процент или число.
- Нажмите кнопку Выберите кнопка.
Вот и все! Как показано на изображении ниже, случайная выборка выбрана прямо в вашем наборе данных. Если вы хотите скопировать ее куда-нибудь, просто нажмите обычную комбинацию клавиш копирования (Ctrl + C) .
Вот как выбрать случайную выборку в Excel без дубликатов. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Доступные загрузки
Случайная выборка без дубликатов - примеры формул (файл.xlsx)
Ultimate Suite 14-дневная полнофункциональная версия (файл .exe)