Функция RANDARRAY на Excel - бърз начин за генериране на случайни числа

  • Споделя Това
Michael Brown

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

Както вероятно знаете, Microsoft Excel вече разполага с няколко функции за рандомизиране - RAND и RANDBETWEEN. Какъв е смисълът от въвеждането на още една? Накратко, защото тя е много по-мощна и може да замени и двете по-стари функции. Освен че можете да зададете свои собствени максимални и минимални стойности, тя ви позволява да определите колко реда и колони да се запълнят и дали да се получат случайни десетични илиИзползвана заедно с други функции, RANDARRAY може дори да разбърква данни и да избира случайна извадка.

    Функция RANDARRAY на Excel

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

    Това е една от шестте нови функции за динамични масиви, въведени в Microsoft Excel 365. Резултатът е динамичен масив, който се разлива автоматично в определения брой редове и колони.

    Функцията има следния синтаксис. Обърнете внимание, че всички аргументи са незадължителни:

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

    Къде:

    Редове (незадължително) - определя колко реда да се запълнят. Ако е пропуснато, по подразбиране е 1 ред.

    Колони (незадължително) - определя колко колони да се запълнят. Ако се пропусне, по подразбиране се задава 1 колона.

    Min (незадължително) - най-малкото случайно число, което ще се създаде. Ако не е посочено, се използва стойността по подразбиране 0.

    Макс (незадължително) - най-голямото случайно число, което да се създаде. Ако не е посочено, се използва стойността по подразбиране 1.

    Цяло_число (незадължително) - определя какъв вид стойности да се връщат:

    • TRUE - цели числа
    • FALSE или пропуснато (по подразбиране) - десетични числа

    Функция RANDARRAY - неща, които трябва да запомните

    За да генерирате ефективно случайни числа в работните си листове в Excel, трябва да обърнете внимание на 6 важни точки:

    • Функцията RANDARRAY е налична само в Excel за Microsoft 365 и Excel 2021. В Excel 2019, Excel 2016 и по-ранни версии функцията RANDARRAY не е налична.
    • Ако масивът, върнат от RANDARRAY, е крайният резултат (изведен в клетка и не е предаден на друга функция), Excel автоматично създава динамичен диапазон за разливане и го попълва със случайните числа. Затова се уверете, че имате достатъчно празни клетки надолу и/или вдясно от клетката, в която въвеждате формулата, в противен случай ще се появи грешка #SPILL.
    • Ако не е посочен нито един от аргументите, формулата RANDARRAY() връща едно десетично число между 0 и 1.
    • Ако редове или/и колони Аргументите са представени с десетични числа, те ще бъдат съкратени до цялото цяло число преди десетичната запетая (например 5.9 ще се разглежда като 5).
    • Ако мин или максимум не е дефиниран, RANDARRAY е съответно 0 и 1 по подразбиране.
    • Подобно на други функции за случаен избор, RANDARRAY на Excel е летливи , което означава, че генерира нов списък със случайни стойности при всяко изчисление на работния лист. За да предотвратите това, можете да замените формулите със стойности, като използвате функцията на Excel Специално поставяне > Стойности функция.

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

    А сега ще ви покажа една произволна формула на 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. За целта задаваме следните аргументи на функцията RANDARRAY:

    • Редове е 6, тъй като искаме да получим резултатите в 6 реда.
    • Колони е 4, тъй като искаме да получим резултатите в 4 колони.
    • Min е 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)

    За да предотвратите грешки, можете да използвате функцията DATE за въвеждане на дати:

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

    Забележка. Вътрешно Excel съхранява датите като серийни номера, така че резултатите от формулата най-вероятно ще бъдат показани като числа. За да се покажат резултатите правилно, приложете Дата формат за всички клетки в диапазона на разливане.

    Генериране на случайни работни дни в Excel

    За да създадете произволни работни дни, вградете функцията RANDARRAY в първия аргумент на WORKDAY по следния начин:

    РАБОТЕН ДЕН(RANDARRAY(редове, колони, дата1 , дата2 , TRUE), 1)

    RANDARRAY ще създаде масив от произволни начални дати, към които функцията WORKDAY ще добави 1 работен ден и ще гарантира, че всички върнати дати са работни дни.

    При дата 1 в D1 и дата 2 в D2 ето формулата за създаване на списък с 10 работни дни:

    =РАБОТЕН ДЕН(RANDARRAY(10, 1, D1, D2, TRUE), 1)

    Както и в предишния пример, не забравяйте да форматирате диапазона на разливане като Дата за да се покажат правилно резултатите.

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

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

    За да създадете свой собствен уникален генератор на случайни числа в Excel, ще трябва да свържете няколко функции, както е показано по-долу.

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

    ИНДЕКС(UNIQUE(RANDARRAY( n *2, 1, мин , макс , TRUE)), SEQUENCE( n ))

    Случайни десетични дроби :

    ИНДЕКС(UNIQUE(RANDARRAY( n *2, 1, мин , макс , FALSE)), SEQUENCE( n ))

    Къде:

    • N е колко стойности искате да генерирате.
    • Min е най-ниската стойност.
    • Макс е най-високата стойност.

    Например, за да получите 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 за масива "сортиране по" ( 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( данни ), 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 по този начин:

    ИЗБЕРЕТЕ(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, която създава масив от случайни цели числа въз основа на зададените от вас минимални и максимални числа (в нашия случай от 1 до 3). Функцията ROWS указва на RANDARRAY колко случайни числа да генерира. Този масив отива в index_num аргумент на функцията 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 са вашите изходни данни.

    И след това задавате групи (или нещо друго), като използвате тази обща формула:

    INDEX( values_to_assign , ROUNDP(РАНГ( first_random_number , random_numbers_range )/ n , 0))

    Къде: n е размерът на групата, т.е. броят пъти, които трябва да бъдат присвоени за всяка стойност.

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

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

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

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

    За да предотвратите генерирането на нови случайни стойности всеки път, когато промените нещо в работния лист, заменете формулите с техните стойности, като използвате функцията Специално поставяне функция.

    Как работи тази формула:

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

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

    Когато формулата ви RANDARRAY връща грешка, това са най-очевидните причини за проверка:

    Грешка #SPILL

    Както при всяка друга функция за динамични масиви, грешката #SPILL! най-често означава, че в предвидения диапазон на разливане няма достатъчно място, за да се покажат всички резултати. Просто изчистете всички клетки в този диапазон и формулата ви ще се преизчисли автоматично. За повече информация вижте Excel #SPILL грешка - причини и начини за отстраняване.

    Грешка #VALUE

    При тези обстоятелства може да възникне грешка #VALUE!:

    • Ако a макс е по-малка от стойност мин стойност.
    • Ако някой от аргументите е нецифров.

    #NAME грешка

    В повечето случаи грешката #NAME! показва едно от следните неща:

    • Името на функцията е изписано неправилно.
    • Тази функция не е налична във вашата версия на Excel.

    #CALC! грешка

    Възниква грешка #CALC!, ако редове или колони е по-малък от 1 или се отнася за празна клетка.

    Това е начинът за създаване на генератор на случайни числа в Excel с новата функция RANDARRAY. Благодаря ви, че прочетохте, и се надявам да се видим в нашия блог следващата седмица!

    Практическа работна тетрадка за изтегляне

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

    Майкъл Браун е отдаден технологичен ентусиаст със страст към опростяване на сложни процеси с помощта на софтуерни инструменти. С повече от десетилетие опит в технологичната индустрия, той е усъвършенствал уменията си в Microsoft Excel и Outlook, както и в Google Sheets и Docs. Блогът на Майкъл е посветен на споделянето на неговите знания и опит с други, предоставяйки лесни за следване съвети и уроци за подобряване на продуктивността и ефективността. Независимо дали сте опитен професионалист или начинаещ, блогът на Michael предлага ценни прозрения и практически съвети за извличане на максимума от тези основни софтуерни инструменти.