Функція RANDARRAY в Excel - швидкий спосіб генерування випадкових чисел

  • Поділитися Цим
Michael Brown

У підручнику показано, як генерувати випадкові числа, випадково сортувати список, отримувати випадкову вибірку і випадково розподіляти дані по групах. Все це за допомогою нової функції динамічного масиву - RANDARRAY.

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

    Функція RANDARRAY Excel

    Функція РАНДЕРРАЙ в Excel повертає масив випадкових чисел між будь-якими двома числами, які ви вкажете.

    Це одна з шести нових функцій динамічних масивів, що з'явилися в Microsoft Excel 365. Результатом є динамічний масив, який автоматично розливається на вказану кількість рядків і стовпців.

    Функція має наступний синтаксис. Зверніть увагу, що всі аргументи є необов'язковими:

    RANDARRAY([рядки], [стовпці], [min], [max], [ціле_число])

    Де:

    Ряди (необов'язково) - визначає кількість рядків для заповнення. Якщо не вказано, за замовчуванням - 1 рядок.

    Колонки (необов'язково) - визначає кількість колонок для заповнення. Якщо не вказано, за замовчуванням використовується 1 колонка.

    Хв (необов'язково) - найменше випадкове число, що генерується. Якщо не вказано, використовується значення за замовчуванням 0.

    Макс (необов'язково) - найбільше випадкове число для створення. Якщо не вказано, використовується значення за замовчуванням 1.

    Ціле_число (необов'язково) - визначає, які саме значення повертати:

    • TRUE - цілі числа
    • FALSE або пропущено (за замовчуванням) - десяткові числа

    Функція RANDARRAY - що потрібно пам'ятати

    Щоб ефективно генерувати випадкові числа в таблицях Excel, слід звернути увагу на 6 важливих моментів:

    • Функція РАНДРАРЯД доступна тільки в Excel для Microsoft 365 і Excel 2021. В Excel 2019, Excel 2016 і більш ранніх версіях функція РАНДРАРЯД недоступна.
    • Якщо масив, що повертається функцією RANDARRAY, є кінцевим результатом (виводиться в комірку і не передається в іншу функцію), Excel автоматично створює динамічний діапазон розливу і заповнює його випадковими числами. Тому переконайтеся, що у вас достатньо порожніх комірок нижче і/або правіше комірки, в яку ви вводите формулу, інакше виникне помилка #SPILL.
    • Якщо жоден з аргументів не вказаний, формула РАНДРАЙ() повертає єдине десяткове число від 0 до 1.
    • У разі, якщо ряди або/та колонки аргументи представлені десятковими числами, вони будуть усічені до цілого числа перед десятковою крапкою (наприклад, 5.9 буде розглядатися як 5).
    • У разі, якщо хв або максимум не визначено, RANDARRAY за замовчуванням приймає значення 0 та 1 відповідно.
    • Як і інші випадкові функції, RANDARRAY Excel - це нестабільний тобто генерує новий список випадкових значень кожного разу, коли обчислюється робочий аркуш. Щоб цього не відбувалося, можна замінити формули значеннями, використовуючи функцію Excel Паста спеціальна > Цінності особливість.

    Базова формула RANDARRAY Excel

    А зараз я покажу вам випадкову формулу Excel у її найпростішому вигляді.

    Нехай потрібно заповнити діапазон, що складається з 5 рядків і 3 стовпців, довільними випадковими числами. Для цього потрібно задати перші два аргументи таким чином:

    • Ряди дорівнює 5, оскільки ми хочемо отримати результати у 5 рядках.
    • Колонки дорівнює 3, оскільки ми хочемо отримати результати в 3 колонках.

    Всі інші аргументи залишаємо зі значеннями за замовчуванням і отримуємо наступну формулу:

    =RANDARRAY(5, 3)

    Введіть його в ліву верхню комірку діапазону призначення (в нашому випадку А2), натисніть клавішу Enter, і ви отримаєте результати, розкидані по вказаній кількості рядків і стовпців.

    Як ви можете бачити на скріншоті вище, ця базова формула RANDARRAY заповнює діапазон випадковими десятковими числами від 0 до 1. Якщо ви хочете отримати цілі числа в певному діапазоні, налаштуйте останні три аргументи, як показано в наступних прикладах.

    Як рандомізувати в Excel - приклади формул RANDARRAY

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

    Генерувати випадкові числа між двома числами

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

    Для прикладу заповнимо діапазон з 6 рядків і 4 стовпців випадковими цілими числами від 1 до 100. Для цього задамо наступні аргументи функції РАНДЕРРАЙ:

    • Ряди дорівнює 6, оскільки ми хочемо отримати результати у 6 рядках.
    • Колонки дорівнює 4, оскільки ми хочемо отримати результати в 4 колонках.
    • Хв дорівнює 1, що є мінімальним значенням, яке ми бажаємо мати.
    • Макс дорівнює 100, що є максимальним значенням, яке може бути згенеровано.
    • Ціле_число є TRUE, тому що нам потрібні цілі числа.

    Склавши аргументи докупи, отримуємо таку формулу:

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

    І це дає наступний результат:

    Згенерувати випадкову дату між двома датами

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

    RANDARRAY(рядки, стовпці, дата1 , дата2 , TRUE)

    Для цього прикладу ми створили список випадкових дат між датами в D1 і D2 за допомогою цієї формули:

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

    Звичайно, ніщо не заважає вам за бажанням вказати мінімальну та максимальну дати безпосередньо у формулі. Просто переконайтеся, що ви вводите їх у форматі, який розуміє Excel:

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

    Для запобігання помилок можна використовувати функцію ДАТА для введення дат:

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

    Примітка. Внутрішньо Excel зберігає дати у вигляді порядкових номерів, тому результати формул, швидше за все, будуть відображатися у вигляді чисел. Для коректного відображення результатів застосуйте функцію Дата в усі комірки діапазону розливу.

    Генерація випадкових робочих днів в Excel

    Щоб отримати випадкові робочі дні, вставте функцію RANDARRAY в перший аргумент WORKDAY таким чином:

    WORKDAY(RANDARRAY(рядки, стовпці, дата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, хв , максимум , TRUE)), SEQUENCE( n ))

    Випадкові десяткові знаки :

    INDEX(UNIQUE(RANDARRAY( n *2, 1, хв , максимум , FALSE)), SEQUENCE( n ))

    Де:

    • N це те, скільки цінностей ви хочете створити.
    • Хв є найнижчим значенням.
    • Макс є найвищим значенням.

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

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

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

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

    Поради та примітки:

    • Детальне пояснення формули можна знайти в статті Як згенерувати випадкові числа в Excel без дублів.
    • В Excel 2019 та більш ранніх версіях функція РАНДЕРРАЙ недоступна. Натомість, будь ласка, ознайомтеся з цим рішенням.

    Як виконати довільне сортування в Excel

    Щоб перемішати дані в Excel, використовуйте RANDARRAY для масиву "сортування по" ( by_array Функція ROWS підрахує кількість рядків у вашому наборі даних, вказуючи, скільки випадкових чисел потрібно згенерувати:

    SORTBY( дані , RANDARRAY(ROWS( дані )))

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

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

    Також, ви можете також перемішати ряди без змішування ваших даних:

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

    Як отримати випадкову вибірку в Excel

    Щоб витягти випадкову вибірку зі списку, ось загальна формула, яку слід використовувати:

    INDEX( дані RANDARRAY( n , 1, 1, ROWS( дані ), ПРАВДА))

    Де n кількість випадкових записів, які ви хочете витягти.

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

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

    Або введіть бажаний розмір вибірки в якусь комірку, скажімо С2, і зробіть посилання на цю комірку:

    =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

    Якщо ваш набір даних містить більше одного стовпця, то вкажіть, які саме стовпці включити у вибірку. Для цього вкажіть константу масиву для останнього аргументу ( column_num ) функції 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 учасникам в А2:А13 використовуйте цю формулу:

    =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 буде генерувати нові випадкові значення при кожній зміні робочого аркуша, в результаті чого щоразу будуть присвоюватися нові значення. Щоб "зафіксувати" присвоєні значення, скористайтеся функцією Вставка специальных значений для заміни формул на їх обчислені значення.

    Як працює ця формула

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

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

    Індекс_номер аргумент, який визначає позиції значень, що повертаються. А оскільки позиції випадкові, то і значення в D2:D4 вибираються у випадковому порядку. Так, все просто :)

    Як випадковим чином розподілити дані по групах

    Якщо вашим завданням є випадковий розподіл учасників по групах, наведена вище формула може не підійти, оскільки вона не контролює, скільки разів обирається та чи інша група. Наприклад, до групи А може бути призначено 5 осіб, а до групи С - лише 2 особи. Щоб здійснити випадковий розподіл, виконайте такі дії рівномірно Щоб у кожній групі була однакова кількість учасників, потрібне інше рішення.

    Спочатку ви генеруєте список випадкових чисел за допомогою цієї формули:

    =RANDARRAY(ROWS(A2:A13))

    Де A2:A13 - ваші вихідні дані.

    А потім, використовуючи цю загальну формулу, ви призначаєте групи (або щось інше):

    INDEX( значення_присвоїти , 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 у допоміжному стовпчику дуже проста і навряд чи потребує пояснень, тому зупинимося на формулі у стовпчику С.

    =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, який представляє присвоєну групу.

    Не працює функція RANDARRAY в Excel

    Коли ваша формула RANDARRAY повертає помилку, це найбільш очевидні причини для перевірки:

    помилка #SPILL

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

    #VALUE помилка

    За таких обставин може виникнути помилка #VALUE!

    • Якщо в максимум значення менше ніж a хв цінність.
    • Якщо будь-який з аргументів не є числовим.

    #NAME помилка

    У більшості випадків помилка #NAME! вказує на одне з наступних:

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

    #CALC! помилка

    Помилка #CALC! виникає у випадку, якщо ряди або колонки аргумент менше 1 або посилається на порожню комірку.

    Ось так можна побудувати генератор випадкових чисел в Excel за допомогою нової функції РАНДЕРРАЙ. Дякую за прочитання і сподіваюся побачити Вас на нашому блозі наступного тижня!

    Практичний посібник для завантаження

    Приклади формул RANDARRAY (файл .xlsx)

    Майкл Браун — відданий ентузіаст технологій із пристрастю до спрощення складних процесів за допомогою програмних засобів. Маючи понад десятирічний досвід роботи в технологічній індустрії, він відточив свої навички роботи з Microsoft Excel і Outlook, а також із Google Таблицями та Документами. Блог Майкла присвячений тому, щоб поділитися своїми знаннями та досвідом з іншими, надаючи прості поради та навчальні посібники для підвищення продуктивності та ефективності. Незалежно від того, чи є ви досвідченим професіоналом чи початківцем, блог Майкла пропонує цінну інформацію та практичні поради щодо отримання максимальної користі від цих основних програмних інструментів.