Fórmula de Excel: Lista aleatoria de nombres -

Fórmula genérica

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

Resumen

Para crear una lista aleatoria de nombres, puede utilizar la función INDICE y la función RANDARRAY para seleccionar nombres aleatorios de una lista existente. En el ejemplo que se muestra, la fórmula en D5 es:

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

que devuelve 10 valores aleatorios del rango con nombre "nombres" (B5: B104).

Explicación

Básicamente, esta fórmula utiliza la función INDICE para recuperar 10 nombres aleatorios de un rango con nombre llamado "nombres" que contiene 100 nombres. Por ejemplo, para recuperar el quinto nombre de la lista, usamos ÍNDICE así:

=INDEX(names,5)

Sin embargo, el truco en este caso es que no queremos un solo nombre en una ubicación conocida, queremos 10 nombres aleatorios en ubicaciones desconocidas entre 1 y 100. Este es un caso de uso excelente para la función RANDARRAY, que puede crear un conjunto aleatorio de números enteros en un rango dado. Trabajando de adentro hacia afuera, usamos RANDARRAY para obtener 10 números aleatorios entre 1 y 100 como este:

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

La función COUNTA se usa para obtener un recuento dinámico de nombres en la lista, pero podríamos reemplazar COUNTA con un 100 codificado en este caso con el mismo resultado:

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

En cualquier caso, RANDARRAY devolverá 10 números en una matriz que se ve así:

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

Nota: estos números son solo aleatorios y no se asignan directamente al ejemplo que se muestra.

Esta matriz se devuelve directamente a la función INDICE como argumento de fila:

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

Debido a que le damos al ÍNDICE 10 números de fila, obtendrá 10 resultados, cada uno correspondiente a un nombre en la posición dada. Los 10 nombres aleatorios se devuelven en un rango de derrame que comienza en la celda D5.

Nota: RANDARRAY es una función volátil y se volverá a calcular cada vez que se cambie la hoja de trabajo, lo que provocará que se repitan los valores. Para evitar que los valores se ordenen automáticamente, puede copiar las fórmulas y luego usar Pegado especial> Valores para convertir fórmulas en valores estáticos.

Evitar duplicados

Un problema con la fórmula anterior (según sus necesidades) es que RANDARRAY a veces generará números duplicados. En otras palabras, no hay garantía de que RANDARRAY devuelva 10 números únicos.

Para asegurar 10 nombres diferentes de la lista, puede adaptar la fórmula para ordenar aleatoriamente la lista completa de nombres y luego recuperar los primeros 10 nombres de la lista. La fórmula en F5 usa este enfoque:

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

El enfoque aquí es el mismo que el anterior: estamos usando ÍNDICE para recuperar 10 valores de la lista de nombres. Sin embargo, en esta versión de la fórmula, estamos ordenando la lista de nombres al azar antes de entregar la lista a INDICE de esta manera:

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

Aquí, la función SORTBY se usa para ordenar la lista de nombres aleatoriamente con una matriz de valores creada por la función RANDARRAY, como se explica con más detalle aquí.

Finalmente, necesitamos recuperar 10 valores. Debido a que ya tenemos nombres en un orden aleatorio, simplemente podemos solicitar los primeros 10 con una matriz creada por la función SEQUENCE como esta:

SEQUENCE(10)

SEQUENCE crea una matriz de números secuenciales:

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

que se devuelve a la función INDICE como argumento de fila. INDICE luego devuelve los primeros 10 nombres en un rango de derrame como la fórmula original.

Articulos interesantes...