
Fórmula genérica
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Resumo
Para criar uma lista aleatória de nomes, você pode usar a função INDEX e a função RANDARRAY para selecionar nomes aleatórios de uma lista existente. No exemplo mostrado, a fórmula em D5 é:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
que retorna 10 valores aleatórios do intervalo nomeado "nomes" (B5: B104).
Explicação
Basicamente, essa fórmula usa a função INDEX para recuperar 10 nomes aleatórios de um intervalo nomeado chamado "nomes", que contém 100 nomes. Por exemplo, para recuperar o quinto nome da lista, usamos INDEX assim:
=INDEX(names,5)
No entanto, o truque neste caso é que não queremos um único nome em um local conhecido, queremos 10 nomes aleatórios em locais desconhecidos entre 1 e 100. Este é um excelente caso de uso para a função RANDARRAY, que pode criar um conjunto aleatório de inteiros em um determinado intervalo. Trabalhando de dentro para fora, usamos RANDARRAY para obter 10 números aleatórios entre 1 e 100 como este:
RANDARRAY(10,1,1,COUNTA(names)
A função CONT.valores é usada para obter uma contagem dinâmica de nomes na lista, mas poderíamos substituir CONT.valores por um 100 codificado neste caso com o mesmo resultado:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
Em ambos os casos, RANDARRAY retornará 10 números em uma matriz semelhante a esta:
(64;74;13;74;96;65;5;73;84;85)
Observação: esses números são aleatórios apenas e não mapeiam diretamente para o exemplo mostrado.
Esta matriz é retornada diretamente para a função INDEX como o argumento da linha:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Como estamos dando INDEX 10 números de linha, ele terá 10 resultados, cada um correspondendo a um nome na posição fornecida. Os 10 nomes aleatórios são retornados em um intervalo de derramamento começando na célula D5.
Nota: RANDARRAY é uma função volátil e será recalculada toda vez que a planilha for alterada, fazendo com que os valores sejam reclassificados. Para interromper a classificação automática de valores, você pode copiar as fórmulas e, em seguida, usar Colar especial> Valores para converter fórmulas em valores estáticos.
Evite duplicatas
Um problema com a fórmula acima (dependendo de suas necessidades) é que RANDARRAY às vezes gera números duplicados. Em outras palavras, não há garantia de que RANDARRAY retornará 10 números exclusivos.
Para garantir 10 nomes diferentes da lista, você pode adaptar a fórmula para classificar aleatoriamente a lista completa de nomes e, em seguida, recuperar os primeiros 10 nomes da lista. A fórmula em F5 usa esta abordagem:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
A abordagem aqui é igual à anterior - estamos usando INDEX para recuperar 10 valores da lista de nomes. No entanto, nesta versão da fórmula, estamos classificando a lista de nomes aleatoriamente antes de entregar, dando a lista para INDEX assim:
SORTBY(names,RANDARRAY(COUNTA(names)))
Aqui, a função SORTBY é usada para classificar a lista de nomes aleatoriamente com uma matriz de valores criada pela função RANDARRAY, conforme explicado em mais detalhes aqui.
Finalmente, precisamos recuperar 10 valores. Como já temos nomes em uma ordem aleatória, podemos simplesmente solicitar os primeiros 10 com uma matriz criada pela função SEQUENCE como esta:
SEQUENCE(10)
SEQUENCE constrói uma matriz de números sequenciais:
(1;2;3;4;5;6;7;8;9;10)
que é retornado à função INDEX como o argumento da linha. INDEX então retorna os primeiros 10 nomes em um intervalo intermediário como a fórmula original.