Зміст
У підручнику показано, як генерувати випадкові числа, випадково сортувати список, отримувати випадкову вибірку і випадково розподіляти дані по групах. Все це за допомогою нової функції динамічного масиву - 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)