How to generate a list of random numbers with no repeats?

Generar Números Aleatorios Sin Repetir en Excel

01/02/2013

Valoración: 4.9 (7326 votos)

Generar números aleatorios es una tarea común en Excel, ya sea para sorteos, muestreos estadísticos o simplemente para crear datos de prueba. Las funciones clásicas como RAND() y RANDBETWEEN() son increíblemente útiles, pero tienen una gran limitación: no garantizan que los números generados sean únicos. Es muy probable que, al generar una lista larga, te encuentres con valores duplicados. Afortunadamente, existen varias técnicas, desde fórmulas avanzadas hasta métodos manuales, para crear listas de números aleatorios únicos. En esta guía completa, exploraremos los métodos más eficientes para cada versión de Excel, asegurando que obtengas siempre el resultado que necesitas.

How to produce random numbers without repetition?
UNIQUE function can be combined with RANDARRAY function to produce random numbers without repetition. Here’s an example formula: This formula does the same thing as the previous one, but it uses the UNIQUE function to make sure there are no repeats.
Índice de Contenido

El Poder de las Matrices Dinámicas: Excel 365 y 2021

Si eres usuario de las versiones más recientes de Excel (Microsoft 365 o Excel 2021), estás de suerte. La introducción de las matrices dinámicas ha revolucionado la forma en que trabajamos con fórmulas, permitiendo soluciones elegantes y potentes que antes eran impensables. A continuación, te presentamos los mejores métodos.

Método 1: La Combinación Perfecta con SORTBY, SEQUENCE y RANDARRAY

Este es, por mucho, el método más sencillo e intuitivo para generar una lista de números secuenciales en orden aleatorio. Imagina que quieres barajar los números del 1 al 10. Esta fórmula lo hace por ti.

La fórmula general es:

=SORTBY(SEQUENCE(n), RANDARRAY(n))

Donde n es la cantidad de números que deseas generar.

Por ejemplo, para crear una lista aleatoria de 10 números únicos del 1 al 10, simplemente introduce en una celda:

=SORTBY(SEQUENCE(10), RANDARRAY(10))

Presiona Enter y Excel automáticamente llenará las 10 celdas debajo con los números del 1 al 10 en un orden completamente aleatorio y sin repeticiones. ¡Es así de simple!

¿Cómo funciona esta magia?

  • SEQUENCE(10): Esta función crea una lista ordenada de números del 1 al 10.
  • RANDARRAY(10): Genera una lista paralela de 10 números aleatorios (decimales entre 0 y 1).
  • SORTBY(...): Utiliza la lista de números aleatorios generada por RANDARRAY como criterio para ordenar la lista secuencial de SEQUENCE. Como la lista de criterio es aleatoria, el resultado final es una lista ordenada de forma aleatoria.

Puedes personalizar aún más esta fórmula. Si quisieras 5 números aleatorios que comiencen en 100 y se incrementen de 10 en 10 (100, 110, 120, etc.), usarías:

=SORTBY(SEQUENCE(5, 1, 100, 10), RANDARRAY(5))

Método 2: Números Aleatorios Únicos en un Rango Específico

El método anterior es perfecto para barajar una secuencia, pero ¿qué pasa si quieres 10 números aleatorios únicos entre 1 y 1000? Aquí es donde entra en juego una fórmula más robusta que combina INDEX, UNIQUE y RANDARRAY.

La fórmula genérica para enteros aleatorios únicos es:

=INDEX(UNIQUE(RANDARRAY(n^2, 1, min, max, TRUE)), SEQUENCE(n))

Y para decimales aleatorios únicos:

=INDEX(UNIQUE(RANDARRAY(n^2, 1, min, max, FALSE)), SEQUENCE(n))

Desglose de la fórmula:

  • n: La cantidad de números únicos que necesitas.
  • min: El valor mínimo del rango.
  • max: El valor máximo del rango.

Supongamos que queremos 10 números enteros aleatorios únicos entre 1 y 100. La fórmula sería:

=INDEX(UNIQUE(RANDARRAY(10^2, 1, 1, 100, TRUE)), SEQUENCE(10))

¿Por qué funciona?

  1. RANDARRAY(10^2, 1, 1, 100, TRUE): El corazón de la operación. Le pedimos a Excel que genere una gran cantidad de números aleatorios (10 al cuadrado, es decir, 100 números) entre 1 y 100. Al generar muchos más números de los que necesitamos, aumentamos drásticamente la probabilidad de tener suficientes valores únicos para nuestra lista final.
  2. UNIQUE(...): Esta función toma esa gran lista de 100 números y filtra todos los duplicados, devolviendo una matriz limpia de valores únicos.
  3. INDEX(..., SEQUENCE(10)): Finalmente, INDEX extrae los primeros 10 valores de la lista única que le proporcionó UNIQUE. Como la lista original era aleatoria, estos 10 valores también lo son.

Soluciones para Versiones Clásicas de Excel (2019, 2016 y anteriores)

Si no tienes acceso a las matrices dinámicas, no te preocupes. Aunque el proceso requiere más pasos, es totalmente posible conseguir el mismo resultado. El método principal es una combinación de una función de aleatorización y la herramienta de "Quitar Duplicados".

Método Manual: RANDBETWEEN + Quitar Duplicados

Este es un método a prueba de fallos y fácil de seguir para cualquier usuario.

  1. Generar los números aleatorios: Elige una columna y decide cuántos números necesitas. Digamos que quieres 15 números únicos entre 1 y 50. Para estar seguro, genera más de los que necesitas, por ejemplo, 30. En la celda A1, escribe la fórmula =RANDBETWEEN(1, 50) y arrástrala hacia abajo hasta la celda A30.
  2. Congelar los valores (¡Paso crucial!): Las funciones RAND y RANDBETWEEN son volátiles, lo que significa que se recalculan cada vez que haces un cambio en la hoja. Para evitar esto, debes convertir las fórmulas en valores estáticos. Selecciona todas las celdas con la fórmula (A1:A30), cópialas (Ctrl + C), luego haz clic derecho sobre la selección, elige "Pegado especial" y selecciona "Valores". Ahora los números ya no cambiarán.
  3. Eliminar los duplicados: Con las celdas aún seleccionadas, ve a la pestaña Datos > Herramientas de datos y haz clic en Quitar Duplicados. En el cuadro de diálogo que aparece, simplemente haz clic en Aceptar. Excel eliminará todas las apariciones repetidas, dejando solo la primera.
  4. Ajustar la lista: Ahora tendrás una lista de números únicos. Simplemente elimina los números sobrantes para quedarte con los 15 que necesitabas originalmente.

Método con Fórmulas: RANK.EQ + COUNTIF

Para los que prefieren una solución basada en fórmulas en versiones antiguas, esta combinación es un truco ingenioso.

What is a true random number generator?
A true random number generator receives information from these types of unpredictable events to produce a truly random number. This calculator uses a randomizing computer program to produce random numbers, so it is a pseudo-random number generator. What is your range? Set a minimum number and a maximum number.
  1. Columna auxiliar: En una columna (por ejemplo, la columna A), usa la fórmula =RAND() para generar una lista de números decimales aleatorios. Genera tantos como números únicos necesites.
  2. Fórmula principal: En la columna de al lado (columna B), introduce la siguiente fórmula (asumiendo que tus números aleatorios están en A2:A11):
    =RANK.EQ(A2, $A$2:$A$11) + COUNTIF($A$2:A2, A2) - 1
    Esta fórmula se debe arrastrar hacia abajo.

¿Cómo funciona?RANK.EQ clasifica cada número aleatorio dentro del rango. COUNTIF actúa como un desempate. Si dos números aleatorios generados por RAND() fueran idénticos (algo extremadamente raro pero posible), COUNTIF ajusta el rango para garantizar que el resultado final siga siendo único.

Tabla Comparativa de Métodos

MétodoVersión de ExcelProsContras
SORTBY + SEQUENCE365 / 2021Extremadamente simple, una sola fórmula, dinámico.Solo baraja una secuencia, no para rangos específicos (ej. 10 números entre 1 y 1000).
UNIQUE + RANDARRAY365 / 2021Muy potente, permite especificar rango (min/max), genera enteros o decimales.La fórmula es más compleja, puede ser lento con listas muy grandes.
RANDBETWEEN + Quitar DuplicadosTodas las versionesUniversal, fácil de entender y ejecutar.Proceso manual de varios pasos, no es dinámico (el resultado es estático).
RANK.EQ + COUNTIFVersiones antiguasSolución basada en fórmulas que no requiere herramientas adicionales.Requiere una columna auxiliar, la fórmula es compleja de entender.

Preguntas Frecuentes (FAQ)

¿Por qué mis números aleatorios cambian constantemente?

Las funciones como RAND(), RANDBETWEEN() y RANDARRAY() son volátiles. Esto significa que Excel las recalcula cada vez que se produce un cambio en cualquier celda de la hoja de cálculo. Para evitarlo, debes convertir el resultado de la fórmula en un valor estático usando la opción de "Pegado Especial > Valores".

¿Cuál es el método más fácil para generar números aleatorios sin repetición?

Si tienes Excel 365 o 2021, la fórmula =SORTBY(SEQUENCE(n), RANDARRAY(n)) es sin duda la más fácil para barajar una lista de números. Para versiones más antiguas, el método manual de usar RANDBETWEEN y luego la herramienta "Quitar Duplicados" es el más sencillo de ejecutar.

¿Puedo generar un rango de números aleatorios únicos, por ejemplo, en una cuadrícula de 5x5?

¡Sí! Con las matrices dinámicas, es muy fácil. Puedes adaptar la fórmula de INDEX y UNIQUE. Para llenar un rango de 10 filas y 3 columnas con números únicos del 1 al 100, usarías:
=INDEX(UNIQUE(RANDARRAY((10*3)^2, 1, 1, 100, TRUE)), SEQUENCE(10, 3))
La clave está en la función SEQUENCE(10, 3), que le dice a INDEX que organice los resultados en 10 filas y 3 columnas.

¿Qué significa el error #SPILL!?

Este error es exclusivo de las matrices dinámicas y aparece cuando Excel quiere "derramar" los resultados de la fórmula en un rango de celdas, pero hay algo en el camino (como texto u otro valor). Asegúrate de que las celdas debajo y/o a la derecha de donde introduces la fórmula estén completamente vacías.

¿Son los números de Excel "verdaderamente" aleatorios?

Técnicamente, no. Excel, como la mayoría de los programas informáticos, utiliza generadores de números pseudoaleatorios (PRNG). Estos son algoritmos que producen secuencias de números que parecen aleatorias, pero que en realidad son deterministas y se repetirán si la secuencia es lo suficientemente larga. Para la gran mayoría de aplicaciones (sorteos, análisis, juegos), esta aleatoriedad es más que suficiente. Los generadores de números verdaderamente aleatorios (TRNG) se basan en fenómenos físicos impredecibles, como el ruido atmosférico.

Si quieres conocer otros artículos parecidos a Generar Números Aleatorios Sin Repetir en Excel puedes visitar la categoría Juegos.

Subir