Формула на Excel: случаен списък с имена -

Съдържание

Обща формула

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

Обобщение

За да създадете произволен списък с имена, можете да използвате функцията INDEX и функцията RANDARRAY, за да изберете произволни имена от съществуващ списък. В показания пример формулата в D5 е:

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

който връща 10 произволни стойности от посочения диапазон "имена" (B5: B104).

Обяснение

В основата си тази формула използва функцията INDEX за извличане на 10 произволни имена от именуван диапазон, наречен "names", който съдържа 100 имена. Например, за да извлечем петото име от списъка, използваме INDEX по следния начин:

=INDEX(names,5)

Номерът в този случай обаче е, че не искаме нито едно име на известно място, искаме 10 произволни имена на неизвестни места между 1 и 100. Това е отличен случай за използване на функцията RANDARRAY, която може да създаде произволен набор от цели числа в даден диапазон. Работейки отвътре навън, използваме RANDARRAY, за да получим 10 произволни числа между 1 и 100 по следния начин:

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

Функцията COUNTA се използва за получаване на динамичен брой имена в списъка, но можем да заменим COUNTA с твърдо кодирани 100 в този случай със същия резултат:

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

И в двата случая RANDARRAY ще върне 10 числа в масив, който изглежда така:

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

Забележка: тези числа са само произволни и не съответстват директно на показания пример.

Този масив се връща директно към функцията INDEX като аргумент на реда:

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

Тъй като даваме INDEX 10 номера на редове, това ще даде 10 резултата, всеки съответстващ на име на дадената позиция. 10-те произволни имена се връщат в разливен диапазон, започващ в клетка D5.

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

Предотвратяване на дублирания

Един проблем с горната формула (в зависимост от вашите нужди) е, че RANDARRAY понякога генерира дублиращи се числа. С други думи, няма гаранция, че RANDARRAY ще върне 10 уникални номера.

За да осигурите 10 различни имена от списъка, можете да адаптирате формулата, за да сортирате произволно пълния списък с имена, след което да извлечете първите 10 имена от списъка. Формулата във F5 използва този подход:

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

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

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

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

И накрая, трябва да извлечем 10 стойности. Тъй като вече имаме имена в произволен ред, можем просто да поискаме първите 10 с масив, създаден от функцията SEQUENCE по следния начин:

SEQUENCE(10)

SEQUENCE изгражда масив от последователни числа:

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

което се връща на функцията INDEX като аргумент на реда. След това INDEX връща първите 10 имена в разливен диапазон като оригиналната формула.

Интересни статии...