Táboa de contidos
O titorial céntrase en como facer mostraxes aleatorias en Excel sen repeticións. Atoparás solucións para Excel 365, Excel 2021, Excel 2019 e versións anteriores.
Hai un tempo, describimos algunhas formas diferentes de seleccionar aleatoriamente en Excel. A maioría destas solucións dependen das funcións RAND e RANDBETWEEN, que poden xerar números duplicados. En consecuencia, a túa mostra aleatoria pode conter valores repetitivos. Se precisa unha selección aleatoria sen duplicados, use os enfoques descritos neste titorial.
Excel a selección aleatoria da lista sen duplicados
Só funciona en Excel 365 e Excel 2021 que admiten matrices dinámicas.
Para facer unha selección aleatoria dunha lista sen repeticións, use esta fórmula xenérica:
INDEX(SORTBY( datos, RANDARRAY(ROWS( datos))), SEQUENCE( n))Onde n é o tamaño de selección desexado.
Por exemplo, para obter 5 nomes aleatorios únicos da lista en A2:A10, aquí tes a fórmula a usar:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(5))
Por comodidade, podes introducir o tamaño da mostra nun cela predefinida, digamos C2, e proporcione a referencia da cela á función SEQUENCE:
=INDEX(SORTBY(A2:A10, RANDARRAY(ROWS(A2:A10))), SEQUENCE(C2))
Como funciona esta fórmula:
Aquí está unha explicación de alto nivel da lóxica da fórmula: a función RANDARRAY crea unha matriz de números aleatorios, SORTBY ordena os valores orixinais por eses números e INDEX recupera tantos valores comoespecificado por SEQUENCE.
A continuación aparece un desglose detallado:
A función ROWS conta cantas filas contén o seu conxunto de datos e pasa o reconto á función RANDARRAY, polo que pode xerar o mesmo número de decimais aleatorios:
RANDARRAY(ROWS(A2:C10))
Esta matriz de decimais aleatorios úsase como matriz "ordenar por" pola función SORTBY. Como resultado, os teus datos orixinais barallaranse aleatoriamente.
A partir dos datos ordenados aleatoriamente, extrae unha mostra dun tamaño específico. Para iso, fornece a matriz mesturada á función INDEX e solicita recuperar os primeiros valores N coa axuda da función SEQUENCE, que produce unha secuencia de números de 1 a N . Debido a que os datos orixinais xa están ordenados en orde aleatoria, non nos importan que posicións recuperar, só importa a cantidade.
Seleccione filas aleatorias en Excel sen duplicados
Só funciona en Excel 365 e Excel 2021 que admiten matrices dinámicas.
Para seleccionar filas aleatorias sen repeticións, crea unha fórmula deste xeito:
INDEX(SORTBY( datos, RANDARRAY(ROWS( datos))), SEQUENCE( n), {1,2,...})Onde n é o tamaño da mostra e {1,2,...} son números de columna para extraer.
A modo de exemplo, seleccionemos filas aleatorias de A2:C10 sen entradas duplicadas, en función do tamaño da mostra en F1. Como os nosos datos están en 3 columnas, proporcionamos esta constante matricial á fórmula:{1,2,3}
=INDEX(SORTBY(A2:C10, RANDARRAY(ROWS(A2:C10))), SEQUENCE(F1), {1,2,3})
E obtén o seguinte resultado:
Como funciona esta fórmula:
A fórmula funciona exactamente coa mesma lóxica que a anterior. Un pequeno cambio que marca unha gran diferenza é que especifica os argumentos número_fila e número_columna para a función INDEX: número_fila proporcionan SEQUENCE e column_num pola constante da matriz.
Como facer mostraxes aleatorias en Excel 2010 - 2019
Como só Excel para Microsoft 365 e Excel 2021 admiten matrices dinámicas, as funcións de matriz dinámicas utilizadas en os exemplos anteriores só funcionan en Excel 365. Para outras versións, terás que buscar unha solución diferente.
Supoño que queres unha selección aleatoria da lista en A2:A10. Isto pódese facer con dúas fórmulas separadas:
- Xera números aleatorios coa fórmula Rand. No noso caso, introducímolo en B2 e despois copiamos a B10:
=RAND()
- Extrae o primeiro valor aleatorio coa seguinte fórmula, que introduces en E2:
=INDEX($A$2:$A$10, RANK.EQ(B2, $B$2:$B$10) + COUNTIF($B$2:B2, B2) - 1)
- Copie a fórmula anterior en tantas celas como tantos valores aleatorios desexe escoller. Neste exemplo, queremos 4 nomes, polo que copiamos a fórmula de E2 a E5.
Feito! A nosa mostra aleatoria sen duplicados ten o seguinte aspecto:
Como funciona esta fórmula:
Como no primeiro exemplo, usa o Función INDEX para recuperar valores da columna A baseándose nunha fila aleatorianúmeros. A diferenza está na forma de obter eses números:
A función RAND enche o rango B2:B10 con decimais aleatorios.
A función RANK.EQ calcula o rango dun número aleatorio nun determinado número. fila. Por exemplo, en E2, RANK.EQ(B2, $B$2:$B$10) clasifica o número en B2 fronte a todos os números en B2:B10. Cando se copia en E3, a referencia relativa B2 cambia a B3 e devolve o rango do número en B3, e así por diante.
A función COUNTIF atopa cantas ocorrencias dun determinado número hai nas celas anteriores. Por exemplo, en E2, CONTARSE($B$2:B2, B2) comproba só unha cela: a propia B2, e devolve 1. En E5, a fórmula cambia a CONTARSE($B$2:B5, B5) e devolve 2, porque B5 contén o mesmo valor que B2 (teña en conta que isto é só para explicar mellor a lóxica da fórmula; nun conxunto de datos pequeno, as posibilidades de obter números aleatorios duplicados son próximas a cero).
Como resultado, para todos Primeiras ocorrencias, COUNTIF devolve 1, do que resta 1 para manter a clasificación orixinal. Para as segundas ocorrencias, COUNTIF devolve 2. Ao restar 1 aumentas a clasificación en 1, evitando así que se dupliquen as clasificacións.
Por exemplo, para B2, RANK.EQ devolve 1. Como esta é a primeira aparición, COUNTIF tamén devolve 1. RANK.EQ + COUNTIF dá 2. E - 1 restaura o rango 1.
Agora, mira que pasa no caso da 2a ocorrencia. Para B5, RANK.EQ tamén devolve 1 mentres que COUNTIF devolve 2. Sumando isto dá3, do que resta 1. Como resultado final, obtén 2, que representa o rango do número en B5.
O rango vai ao argumento número_fila da función INDEX , e escolle o valor da fila correspondente (omítese o argumento núm_columna , polo que o valor predeterminado é 1). Esta é a razón pola que é tan importante evitar a clasificación duplicada. Se non fose pola función COUNTIF, RANK.EQ daría 1 tanto para B2 como para B5, o que provocaría que INDEX devolvese o valor da primeira fila (Andrew) dúas veces.
Como evitar que cambie a mostra aleatoria de Excel.
Como todas as funcións de aleatorización en Excel como RAND, RANDBETWEEN e RANDARRAY son volátiles, recalcúlanse con cada cambio na folla de cálculo. Como resultado, a túa mostra aleatoria cambiará continuamente. Para evitar que isto ocorra, use o Pegar especial > Función de valores para substituír fórmulas por valores estáticos. Para iso, realiza estes pasos:
- Selecciona todas as celas coa túa fórmula (calquera fórmula que conteña a función RAND, RANDBETWEEN ou RANDARRAY) e preme Ctrl + C para copialas.
- Fai clic co botón dereito no intervalo seleccionado e fai clic en Pegar especial > Valores . Alternativamente, preme Maiús + F10 e despois V , que é o atallo para a función mencionada anteriormente.
Para obter os pasos detallados, consulta Como converter fórmulas en valores en Excel.
Selección aleatoria de Excel: filas, columnasou celas
Funciona en todas as versións de Excel 365 ata Excel 2010.
Se tes o noso Ultimate Suite instalado no teu Excel, podes facer mostraxes aleatorias cun clic do rato en lugar dunha fórmula. Vexa como:
- Na pestana Ferramentas Ablebits , faga clic en Aleatoriar > Seleccionar aleatoriamente .
- Seleccionar o intervalo do que quere escoller unha mostra.
- No panel do complemento, faga o seguinte:
- Escolla se desexa seleccionar filas, columnas ou celas aleatorias.
- Define o tamaño da mostra: pode ser unha porcentaxe ou un número.
- Fai clic no botón Seleccionar .
Isto é iso! Como se mostra na imaxe de abaixo, selecciónase unha mostra aleatoria directamente no seu conxunto de datos. Se queres copialo nalgún lugar, só tes que premer un atallo de copia normal (Ctrl + C) .
É así como seleccionar unha mostra aleatoria en Excel sen duplicados. Grazas por ler e espero verte no noso blog a próxima semana!
Descargas dispoñibles
Mostra aleatoria sen duplicados: exemplos de fórmulas (ficheiro .xlsx)
Ultimate Suite Versión totalmente funcional de 14 días (ficheiro .exe)