Екцел формула: Насумична листа имена -

Преглед садржаја

Генеричка формула

=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))

Резиме

Да бисте креирали насумичну листу имена, помоћу функције ИНДЕКС и РАНДАРРАИ можете одабрати случајна имена са постојеће листе. У приказаном примеру, формула у Д5 је:

=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))

која враћа 10 случајних вредности из именованог опсега „имена“ (Б5: Б104).

Објашњење

У основи, ова формула користи функцију ИНДЕКС за преузимање 10 насумичних имена из именованог опсега названог „имена“ који садржи 100 имена. На пример, да бисмо преузели пето име са листе, користимо ИНДЕКС овако:

=INDEX(names,5)

Међутим, трик је у овом случају да не желимо једно име на познатој локацији, већ 10 насумичних имена на непознатим локацијама између 1 и 100. Ово је одличан случај употребе функције РАНДАРРАИ која може створити случајни скуп целих бројева у датом опсегу. Радећи изнутра према унутра, користимо РАНДАРРАИ да бисмо добили 10 случајних бројева између 1 и 100 овако:

RANDARRAY(10,1,1,COUNTA(names)

Функција ЦОУНТА користи се за добивање динамичког броја имена на листи, али у овом случају бисмо могли заменити ЦОУНТА са кодираним 100, са истим резултатом:

=INDEX(names,RANDARRAY(10,1,1,100,TRUE))

У оба случаја, РАНДАРРАИ ће вратити 10 бројева у низу који изгледа овако:

(64;74;13;74;96;65;5;73;84;85)

Напомена: ови бројеви су само случајни и не пресликавају се директно на приказани пример.

Овај низ се враћа директно у функцију ИНДЕКС као аргумент реда:

=INDEX(names, (64;74;13;74;96;65;5;73;84;85)

Будући да дајемо ИНДЕКС 10 бројева редова, то ће дати 10 резултата, сваки одговара имену на датој позицији. 10 насумичних имена се враћају у опсегу изливања који почиње у ћелији Д5.

Напомена: РАНДАРРАИ је испарљива функција и прерачунаће се сваки пут када се радни лист промени, због чега се прибегавају вредностима. Да бисте зауставили аутоматско сортирање вредности, можете копирати формуле, а затим помоћу Спец. Лепљења> Вредности претворити формуле у статичке вредности.

Спречити дупликате

Један од проблема са горњом формулом (у зависности од ваших потреба) је тај што РАНДАРРАИ понекад генерише дупликате бројева. Другим речима, не постоји гаранција да ће РАНДАРРАИ вратити 10 јединствених бројева.

Да бисте осигурали 10 различитих имена са листе, можете прилагодити формулу тако да насумично сортира целу листу имена, а затим дохватити првих 10 имена са листе. Формула у Ф5 користи овај приступ:

=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))

Приступ овде је исти као и горе - користимо ИНДЕКС да бисмо преузели 10 вредности са листе имена. Међутим, у овој верзији формуле насумично сортирамо листу имена пре него што листу дамо ИНДЕКС-у овако:

SORTBY(names,RANDARRAY(COUNTA(names)))

Овде се функција СОРТБИ користи за случајно сортирање листе имена са вредностима низа које креира функција РАНДАРРАИ, као што је овде детаљније објашњено.

Коначно, морамо да вратимо 10 вредности. Будући да имена већ имамо у случајном редоследу, можемо једноставно затражити првих 10 помоћу низа створеног функцијом СЕКУЕНЦЕ овако:

SEQUENCE(10)

СЕКУЕНЦЕ гради низ секвенцијалних бројева:

(1;2;3;4;5;6;7;8;9;10)

који се враћа функцији ИНДЕКС као аргумент реда. ИНДЕКС затим враћа првих 10 имена у опсегу изливања попут оригиналне формуле.

Занимљиви Чланци...