Функция Excel RANDARRAY - быстрый способ генерации случайных чисел

  • Поделись Этим
Michael Brown

В учебнике показано, как генерировать случайные числа, случайным образом сортировать список, получать случайный выбор и случайным образом распределять данные по группам. Все это с помощью новой функции динамического массива - RANDARRAY.

Как вы, вероятно, знаете, в Microsoft Excel уже есть несколько функций рандомизации - RAND и RANDBETWEEN. Какой смысл вводить еще одну? В двух словах, потому что она гораздо мощнее и может заменить обе старые функции. Помимо задания собственных максимальных и минимальных значений, она позволяет указать, сколько строк и столбцов заполнить, а также выдать случайные десятичные числа илиИспользуемый вместе с другими функциями, RANDARRAY может даже перемешивать данные и выбирать случайную выборку.

    Функция Excel RANDARRAY

    Функция RANDARRAY в Excel возвращает массив случайных чисел между любыми двумя указанными вами числами.

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

    Функция имеет следующий синтаксис. Обратите внимание, что все аргументы являются необязательными:

    RANDARRAY([rows], [columns], [min], [max], [whole_number])

    Где:

    Строки (необязательно) - определяет, сколько строк заполнять. Если не указано, по умолчанию используется 1 строка.

    Колонки (необязательно) - определяет, сколько столбцов заполнять. Если не указано, по умолчанию используется 1 столбец.

    Мин (необязательно) - наименьшее случайное число для получения. Если не указано, то по умолчанию используется значение 0.

    Макс (необязательно) - наибольшее случайное число для создания. Если не указано, используется значение по умолчанию 1.

    целое_число (необязательно) - определяет, какого рода значения возвращать:

    • ИСТИНА - целые числа
    • FALSE или опущено (по умолчанию) - десятичные числа

    Функция RANDARRAY - что нужно помнить

    Чтобы эффективно генерировать случайные числа в рабочих листах Excel, необходимо обратить внимание на 6 важных моментов:

    • Функция RANDARRAY доступна только в Excel для Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и более ранних версиях функция RANDARRAY недоступна.
    • Если массив, возвращаемый RANDARRAY, является конечным результатом (выводится в ячейку и не передается другой функции), Excel автоматически создает динамический диапазон разлива и заполняет его случайными числами. Поэтому убедитесь, что у вас достаточно пустых ячеек внизу и/или справа от ячейки, в которую вы вводите формулу, иначе возникнет ошибка #SPILL.
    • Если ни один из аргументов не указан, формула RANDARRAY() возвращает одно десятичное число от 0 до 1.
    • Если строки или/и колонки аргументы представлены десятичными числами, они будут усечены до целого числа перед десятичной точкой (например, 5.9 будет рассматриваться как 5).
    • Если min или max аргумент не определен, RANDARRAY по умолчанию принимает значения 0 и 1, соответственно.
    • Как и другие случайные функции, Excel RANDARRAY является летучий то есть при каждом расчете рабочего листа генерируется новый список случайных значений. Чтобы этого не произошло, вы можете заменить формулы значениями с помощью функции Excel Специальная вставка > Значения особенность.

    Основная формула Excel RANDARRAY

    А теперь позвольте мне показать вам произвольную формулу Excel в ее простейшем виде.

    Предположим, вы хотите заполнить диапазон, состоящий из 5 строк и 3 столбцов, произвольными случайными числами. Чтобы это сделать, задайте первые два аргумента таким образом:

    • Строки равно 5, поскольку мы хотим получить результаты в 5 строках.
    • Колонки равно 3, так как мы хотим получить результаты в трех столбцах.

    Все остальные аргументы оставляем в значениях по умолчанию и получаем следующую формулу:

    =RANDARRAY(5, 3)

    Введите его в левую верхнюю ячейку целевого диапазона (в нашем случае A2), нажмите клавишу Enter, и вы получите результаты, распределенные по указанному количеству строк и столбцов.

    Как вы можете видеть на скриншоте выше, эта базовая формула RANDARRAY заполняет диапазон случайными десятичными числами от 0 до 1. Если вы предпочитаете получать целые числа в определенном диапазоне, то настройте последние три аргумента, как показано в дальнейших примерах.

    Как произвести рандомизацию в Excel - примеры формулы RANDARRAY

    Ниже вы найдете несколько расширенных формул, которые охватывают типичные сценарии рандомизации в Excel.

    Генерация случайных чисел между двумя числами

    Чтобы создать список случайных чисел в определенном диапазоне, укажите минимальное значение в 3-м аргументе и максимальное число в 4-м аргументе. В зависимости от того, целые или десятичные числа вам нужны, установите 5-й аргумент в TRUE или FALSE соответственно.

    В качестве примера заполним диапазон из 6 строк и 4 столбцов случайными целыми числами от 1 до 100. Для этого зададим следующие аргументы функции RANDARRAY:

    • Строки равно 6, поскольку мы хотим получить результаты в 6 строках.
    • Колонки равно 4, так как мы хотим получить результаты в 4 столбцах.
    • Мин равна 1, что является минимальным значением, которое мы хотим иметь.
    • Макс равно 100, что является максимальным значением, которое может быть сгенерировано.
    • целое_число является TRUE, потому что нам нужны целые числа.

    Сложив аргументы вместе, мы получаем такую формулу:

    =RANDARRAY(6, 4, 1, 100, TRUE)

    И это дает следующий результат:

    Генерирование случайной даты между двумя датами

    Ищете генератор случайных дат в Excel? Функция RANDARRAY - простое решение! Все, что вам нужно сделать, это ввести более раннюю дату (дата 1) и более позднюю дату (дата 2) в заранее определенные ячейки, а затем сослаться на эти ячейки в вашей формуле:

    RANDARRAY(rows, columns, дата1 , дата2 , TRUE)

    Для данного примера мы создали список случайных дат между датами в D1 и D2 с помощью этой формулы:

    =RANDARRAY(10, 1, D1, D2, TRUE)

    Конечно, ничто не мешает вам ввести даты min и max непосредственно в формулу, если вы хотите. Только убедитесь, что вы вводите их в формате, понятном Excel:

    =RANDARRAY(10, 1, "1/1/2020", "12/31/2020", TRUE)

    Чтобы избежать ошибок, для ввода дат можно использовать функцию DATE:

    =RANDARRAY(10, 1, DATE(2020,1,1), DATE(2020,12,31), TRUE)

    Примечание. Внутри Excel даты хранятся как порядковые номера, поэтому результаты формулы, скорее всего, будут отображаться в виде чисел. Чтобы результаты отображались правильно, примените параметр Дата формат для всех ячеек в диапазоне разлива.

    Генерация случайных рабочих дней в Excel

    Чтобы получить случайные рабочие дни, встройте функцию RANDARRAY в первый аргумент WORKDAY следующим образом:

    WORKDAY(RANDARRAY(rows, columns, дата1 , дата2 , TRUE), 1)

    RANDARRAY создаст массив случайных начальных дат, к которым функция WORKDAY добавит 1 рабочий день и убедится, что все возвращенные даты являются рабочими днями.

    Имея дату 1 в D1 и дату 2 в D2, вот формула для создания списка из 10 дней недели:

    =WORKDAY(RANDARRAY(10, 1, D1, D2, TRUE), 1)

    Как и в предыдущем примере, не забудьте отформатировать диапазон разлива как Дата чтобы результаты отображались правильно.

    Как генерировать случайные числа без дубликатов

    Хотя современный Excel предлагает 6 новых функций динамических массивов, к сожалению, до сих пор нет встроенной функции для возврата случайных чисел без дубликатов.

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

    Случайные целые числа :

    INDEX(UNIQUE(RANDARRAY( n *2, 1, min , max , TRUE)), SEQUENCE( n ))

    Произвольные десятичные дроби :

    INDEX(UNIQUE(RANDARRAY( n *2, 1, min , max , FALSE)), SEQUENCE( n ))

    Где:

    • N это количество значений, которые вы хотите сгенерировать.
    • Мин является наименьшим значением.
    • Макс наибольшее значение.

    Например, чтобы получить 10 случайных целых чисел без дубликатов, используйте следующую формулу:

    =INDEX(UNIQUE(RANDARRAY(20, 1, 1, 100, TRUE)), SEQUENCE(10))

    Чтобы создать список из 10 уникальных случайные десятичные числа , измените TRUE на FALSE в последнем аргументе функции RANDARRAY или просто опустите этот аргумент:

    =INDEX(UNIQUE(RANDARRAY(20, 1, 1, 100, FALSE)), SEQUENCE(10))

    Советы и примечания:

    • Подробное объяснение формулы можно найти в статье Как генерировать случайные числа в Excel без дубликатов.
    • В Excel 2019 и более ранних версиях функция RANDARRAY недоступна. Вместо этого ознакомьтесь с этим решением.

    Как произвольно сортировать в Excel

    Чтобы перетасовать данные в Excel, используйте RANDARRAY для массива "сортировать по" ( по_массиву Функция ROWS подсчитает количество строк в вашем наборе данных, указывая, сколько случайных чисел нужно сгенерировать:

    СОРТБИ( данные , RANDARRAY(ROWS( данные )))

    Используя этот подход, вы можете произвольная сортировка списка в Excel, независимо от того, содержат ли они числа, даты или текстовые записи:

    =SORTBY(A2:A13, RANDARRAY(ROWS(A2:A13))))

    Кроме того, вы также можете перетасовать ряды не смешивая ваши данные:

    =SORTBY(A2:B10, RANDARRAY(ROWS(A2:B10))))

    Как получить случайный выбор в Excel

    Чтобы извлечь случайную выборку из списка, можно воспользоваться общей формулой:

    ИНДЕКС( данные , RANDARRAY( n , 1, 1, ROWS( данные ), TRUE))

    Где n это количество случайных записей, которые вы хотите извлечь.

    Например, чтобы случайным образом выбрать 3 имени из списка в A2:A10, используйте эту формулу:

    =INDEX(A2:A10, RANDARRAY(3, 1, 1, ROWS(A2:A10), TRUE))

    Или введите желаемый размер выборки в некоторую ячейку, скажем, C2, и ссылайтесь на эту ячейку:

    =INDEX(A2:A10, RANDARRAY(C2, 1, 1, ROWS(A2:A10), TRUE))

    Как работает эта формула:

    В основе этой формулы лежит функция RANDARRAY, которая создает случайный массив целых чисел, причем значение в C2 определяет, сколько значений нужно сгенерировать. Минимальное число жестко закодировано (1), а максимальное число соответствует количеству строк в вашем наборе данных, которое возвращается функцией ROWS.

    Массив случайных целых чисел поступает непосредственно в row_num аргумент функции INDEX, указывающий позиции возвращаемых элементов. Для примера на скриншоте выше это:

    =INDEX(A2:A10, {8;7;4})

    Совет. При выборе большой выборки из небольшого набора данных есть вероятность, что в случайной выборке будет несколько одинаковых записей, потому что нет гарантии, что RANDARRAY будет выдавать только уникальные числа. Чтобы этого не произошло, используйте версию этой формулы без дубликатов.

    Как выбрать случайные строки в Excel

    Если ваш набор данных содержит более одного столбца, укажите, какие столбцы следует включить в выборку. Для этого в качестве последнего аргумента укажите константу массива ( номер_столбца ) функции INDEX, например, так:

    =INDEX(A2:B10, RANDARRAY(D2, 1, 1, ROWS(A2:A10), TRUE), {1,2})

    Где A2:B10 - исходные данные, а D2 - размер выборки.

    В результате наша случайная выборка будет содержать два столбца данных:

    Совет. Как и в предыдущем примере, эта формула может вернуть дубликаты записей. Чтобы убедиться, что в вашей выборке нет повторов, используйте немного другой подход, описанный в разделе Как выбрать случайные строки без дубликатов.

    Как произвольно распределить числа и текст в Excel

    Чтобы выполнить случайное распределение в Excel, используйте RANDBETWEEN вместе с функцией CHOOSE таким образом:

    CHOOSE(RANDARRAY(ROWS( данные ), 1, 1, n , TRUE), значение1 , значение2 ,...)

    Где:

    • Данные это диапазон ваших исходных данных, которому вы хотите присвоить случайные значения.
    • N это общее количество значений, которые необходимо присвоить.
    • Значение1 , значение2 , значение3 и т.д. являются значениями, которые должны быть присвоены случайным образом.

    Например, чтобы присвоить номера от 1 до 3 участникам в A2:A13, используйте эту формулу:

    =CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 3, TRUE), 1, 2, 3)

    Для удобства вы можете ввести значения для присвоения в отдельные ячейки, скажем, с D2 по D4, и ссылаться на эти ячейки в вашей формуле (по отдельности, а не как на диапазон):

    =CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 3, TRUE), D2, D3, D4)

    В результате вы сможете произвольно присваивать любые числа, буквы, текст, даты и время с помощью одной и той же формулы:

    Примечание. Функция RANDARRAY будет продолжать генерировать новые случайные значения при каждом изменении рабочего листа, в результате чего каждый раз будут присваиваться новые значения. Чтобы "исправить" присвоенные значения, используйте функцию Paste Special> Values для замены формул их вычисленными значениями.

    Как работает эта формула

    В основе этого решения снова лежит функция RANDARRAY, которая создает массив случайных целых чисел на основе заданных вами min и max (в нашем случае от 1 до 3). Функция ROWS сообщает RANDARRAY, сколько случайных чисел нужно сгенерировать. Этот массив поступает в файл индексное_число аргумент функции CHOOSE. Например:

    =CHOOSE({1;2;1;2;3;2;3;3;1;3;1;2}, D2, D3, D4)

    Index_num это аргумент, определяющий позиции возвращаемых значений. А поскольку позиции случайны, значения в D2:D4 выбираются в случайном порядке. Да, все просто :)

    Как случайным образом распределить данные по группам

    Если ваша задача состоит в случайном распределении участников по группам, приведенная выше формула может не подойти, поскольку она не контролирует, сколько раз будет выбрана та или иная группа. Например, в группу А могут быть распределены 5 человек, а в группу С - только 2 человека. Чтобы выполнить случайное распределение равномерно Чтобы в каждой группе было одинаковое количество участников, необходимо другое решение.

    Сначала вы генерируете список случайных чисел, используя эту формулу:

    =RANDARRAY(ROWS(A2:A13))

    Где A2:A13 - ваши исходные данные.

    А затем вы назначаете группы (или что-либо еще), используя эту общую формулу:

    ИНДЕКС( значения_к_назначению , ROUNDUP(RANK( первое_случайное_число , диапазон случайных_чисел )/ n , 0))

    Где n размер группы, т.е. количество раз, которое должно быть присвоено каждому значению.

    Например, для случайного распределения людей по группам, перечисленным в E2:E5, так, чтобы в каждой группе было по 3 участника, используйте эту формулу:

    =INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))

    Обратите внимание, что это обычная формула (не формула динамического массива!), поэтому вам нужно зафиксировать диапазоны абсолютными ссылками, как в формуле выше.

    Введите свою формулу в верхнюю ячейку (в нашем случае C2), а затем перетащите ее вниз на столько ячеек, сколько необходимо. Результат будет выглядеть примерно так:

    Помните, что функция RANDARRAY является непостоянной. Чтобы не генерировать новые случайные значения каждый раз, когда вы что-то меняете в рабочем листе, замените формулы их значениями с помощью функции Специальная вставка особенность.

    Как работает эта формула:

    Формула RANDARRAY в колонке-помощнике очень проста и вряд ли требует объяснений, поэтому сосредоточимся на формуле в колонке C.

    =INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))

    Функция RANK ранжирует значение в B2 по отношению к массиву случайных чисел в B2:B13. Результатом является число от 1 до общего числа участников (в нашем случае 12).

    Ранг делится на размер группы (3 в нашем примере), и функция ROUNDUP округляет его до ближайшего целого числа. Результатом этой операции является число от 1 до общего количества групп (4 в нашем примере).

    Целое число переходит в row_num аргумент функции INDEX, заставляя ее вернуть значение из соответствующей строки в диапазоне E2:E5, которая представляет назначенную группу.

    Функция Excel RANDARRAY не работает

    Когда ваша формула RANDARRAY выдает ошибку, это самые очевидные причины для проверки:

    ошибка #SPILL

    Как и любая другая функция динамического массива, ошибка #SPILL! чаще всего означает, что в предполагаемом диапазоне разлива недостаточно места для отображения всех результатов. Просто очистите все ячейки в этом диапазоне, и ваша формула пересчитается автоматически. Для получения дополнительной информации см. раздел Ошибка Excel #SPILL - причины и устранение.

    ошибка #VALUE

    В этих обстоятельствах может возникнуть ошибка #VALUE!

    • Если max значение меньше, чем min ценность.
    • Если любой из аргументов не является числовым.

    #NAME ошибка

    В большинстве случаев ошибка #NAME! указывает на одно из следующих:

    • Название функции написано неправильно.
    • Функция недоступна в вашей версии Excel.

    #CALC! ошибка

    Ошибка #CALC! возникает, если строки или колонки аргумент меньше 1 или ссылается на пустую ячейку.

    Вот как построить генератор случайных чисел в Excel с помощью новой функции RANDARRAY. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Рабочая тетрадь для тренировок для скачивания

    Примеры формул RANDARRAY (файл.xlsx)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.