Muestreo aleatorio sin repetidos en Excel

Fernando necesita calcular un muestreo del 10% de una tabla para verificar el cumplimiento de objetivos. Su primer intento con ALEATORIO.ENTRE genera números repetidos, lo que invalida el muestreo.

La comunidad propone varias alternativas:

Nacho sugiere el enfoque más pragmático: asignar un valor ALEATORIO() a cada fila y ordenar de mayor a menor. Las primeras filas (el 10% superior) forman la muestra. Al ser valores aleatorios únicos entre 0 y 1, no hay repeticiones.

Peppe propone combinar ALEATORIO.ENTRE() con ALEATORIO() para reducir colisiones, sumando ambos valores.

Un miembro sugiere usar UNICOS para eliminar duplicados del resultado de ALEATORIO.ENTRE, aunque Fernando prueba y reporta que no funciona directamente porque ALEATORIO genera valores nuevos en cada recálculo.

Otro miembro aporta la solución con JERARQUIA.EQV(), que asigna un ranking único a cada valor aleatorio. Fernando lo encuentra prometedor:

``
=ENTERO(1000 * ALEATORIO())
`

Combinado con JERARQUIA.EQV() para obtener posiciones únicas. Finalmente, Ernesto comparte un vídeo con la solución completa del patrón, que Fernando confirma como la solución definitiva.

El enfoque ganador es el clásico: columna auxiliar con ALEATORIO(), ranking con JERARQUIA.EQV()` y selección del top N%. Sencillo, sin repetidos y funcional en cualquier versión de Excel.

Un muestreo del 10% sin números repetidos

Fernando necesitaba sacar una muestra del 10% de una tabla para verificar el cumplimiento de objetivos. Su primer intento con ALEATORIO.ENTRE le devolvía números repetidos, y una muestra con repetidos no vale. La comunidad fue descartando ideas hasta dar con un patrón sólido.

Por qué ALEATORIO.ENTRE no sirve solo

ALEATORIO.ENTRE(1; 100) puede repetir valores: nada le impide sacar el mismo número dos veces. Alguien propuso limpiarlo con UNICOS, pero Fernando comprobó que no funciona directamente, porque ALEATORIO recalcula en cada cambio de la hoja y los valores bailan. Peppe sugirió sumar ALEATORIO.ENTRE() y ALEATORIO() para reducir colisiones, aunque seguía sin garantizar unicidad.

El enfoque ganador: aleatorio más ranking

La solución robusta combina dos ideas. Primero, asignar a cada fila un valor de ALEATORIO(), que genera decimales entre 0 y 1 prácticamente imposibles de repetir. Segundo, convertir ese valor en una posición única con JERARQUIA.EQV:

=ENTERO(1000 * ALEATORIO())

Sobre esa columna auxiliar, JERARQUIA.EQV asigna a cada fila un ranking del 1 al total. Te quedas con las filas cuyo ranking cae en el 10% que buscas y tienes tu muestra: sin repetidos, reproducible y compatible con cualquier versión de Excel.

Nacho lo planteó de la forma más directa de todas: pon una columna con ALEATORIO(), ordena de mayor a menor y coge las primeras filas. El 10% superior es tu muestra aleatoria. Ernesto cerró el hilo con un vídeo que recorre el patrón completo, y Fernando lo confirmó como solución definitiva.

Funciones clave

  • ALEATORIO: genera un decimal entre 0 y 1; la base para desempatar sin repeticiones.
  • ALEATORIO.ENTRE: cómodo para enteros, pero no garantiza valores únicos.
  • JERARQUIA.EQV: convierte los valores aleatorios en posiciones únicas del 1 al total.
  • ENTERO: escala y trunca el aleatorio cuando quieres un rango de trabajo mayor.

Conclusión

La moraleja es útil más allá de este caso: cuando necesitas seleccionar sin repetir, no busques números únicos de entrada, genera un orden aleatorio y quédate con los primeros. Es sencillo, funciona en cualquier versión y no depende de recálculos frágiles. Otro problema cotidiano resuelto entre varios en la comunidad de InflueXcel.

Más casos con estas funciones

Más contenido de Excel en InflueXcel