Formula di Excel: elenco casuale di nomi -

Formula generica

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

Sommario

Per creare un elenco casuale di nomi, è possibile utilizzare la funzione INDICE e la funzione RANDARRAY per selezionare nomi casuali da un elenco esistente. Nell'esempio mostrato, la formula in D5 è:

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

che restituisce 10 valori casuali dall'intervallo denominato "nomi" (B5: B104).

Spiegazione

Fondamentalmente, questa formula utilizza la funzione INDICE per recuperare 10 nomi casuali da un intervallo denominato "nomi" che contiene 100 nomi. Ad esempio, per recuperare il quinto nome dalla lista, usiamo INDICE in questo modo:

=INDEX(names,5)

Tuttavia, il trucco in questo caso è che non vogliamo un singolo nome in una posizione nota, vogliamo 10 nomi casuali in posizioni sconosciute tra 1 e 100. Questo è un eccellente caso d'uso per la funzione RANDARRAY, che può creare un insieme casuale di numeri interi in un dato intervallo. Lavorando dall'interno verso l'esterno, usiamo RANDARRAY per ottenere 10 numeri casuali tra 1 e 100 in questo modo:

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

La funzione COUNTA viene utilizzata per ottenere un conteggio dinamico dei nomi nell'elenco, ma in questo caso potremmo sostituire COUNTA con un 100 hardcoded con lo stesso risultato:

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

In entrambi i casi, RANDARRAY restituirà 10 numeri in un array simile a questo:

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

Nota: questi numeri sono solo casuali e non si associano direttamente all'esempio mostrato.

Questa matrice viene restituita direttamente alla funzione INDICE come argomento della riga:

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

Poiché stiamo dando INDICE 10 numeri di riga, verranno 10 risultati, ciascuno corrispondente a un nome nella posizione data. I 10 nomi casuali vengono restituiti in un intervallo di fuoriuscita che inizia nella cella D5.

Nota: RANDARRAY è una funzione volatile e verrà ricalcolata ogni volta che il foglio di lavoro viene modificato, causando il ricorso ai valori. Per interrompere l'ordinamento automatico dei valori, è possibile copiare le formule, quindi utilizzare Incolla speciale> Valori per convertire le formule in valori statici.

Prevenire i duplicati

Un problema con la formula sopra (a seconda delle tue esigenze) è che RANDARRAY a volte genera numeri duplicati. In altre parole, non vi è alcuna garanzia che RANDARRAY restituirà 10 numeri univoci.

Per garantire 10 nomi diversi dall'elenco, è possibile adattare la formula per ordinare in modo casuale l'elenco completo dei nomi, quindi recuperare i primi 10 nomi dall'elenco. La formula in F5 utilizza questo approccio:

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

L'approccio qui è lo stesso di sopra: stiamo usando INDICE per recuperare 10 valori dall'elenco dei nomi. Tuttavia, in questa versione della formula, stiamo ordinando l'elenco dei nomi in modo casuale prima di consegnare l'elenco a INDICE in questo modo:

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

Qui, la funzione SORTBY viene utilizzata per ordinare l'elenco dei nomi in modo casuale con valori di matrice creati dalla funzione RANDARRAY, come spiegato in maggiore dettaglio qui.

Infine, dobbiamo recuperare 10 valori. Poiché abbiamo già nomi in ordine casuale, possiamo semplicemente richiedere i primi 10 con un array creato dalla funzione SEQUENCE in questo modo:

SEQUENCE(10)

SEQUENCE costruisce un array di numeri sequenziali:

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

che viene restituito alla funzione INDICE come argomento riga. INDICE quindi restituisce i primi 10 nomi in un intervallo di fuoriuscita come la formula originale.

Articoli interessanti...