viernes, 14 de mayo de 2010

Generar Números Aleatorios sin Repeticiones



"Necesito generar 10 números aleatorios entre 1 y 20 sin que se repita ninguno ¿Es posible sin hacer uso de VBA?"

Vamos a ver cómo solucionar esta problema sin hacer uso de macros. Para ello vamos a utilizar dos funciones: ALEATORIO y JERARQUIA.

La función ALEATORIO devuelve un número aleatorio mayor o igual que 0 y menor que 1, distribuido uniformemente. Cada vez que se calcula la hoja de cálculo, se devuelve un número aleatorio nuevo. No tiene argumentos por lo que su sintaxis es =ALEATORIO()

La función JERARQUIA puede consultarla en el post Jerarquía de un valor dentro de un rango o matriz.

1. Comenzamos construyendo la siguiente hoja:


2. En el rango B4:B23 vamos a generar 20 números aleatorios. Para ello seleccionamos dicho rango (B4:B23) y con el rango seleccionado comenzamos a escribir la siguiente fórmula:

=ALEATORIO() y pulsamos Ctrl + Enter. De esta manera rellenaremos de una sola atacada todo el rango seleccionado (también podemos escribir la misma fórmula en B4 y después copiar hacia abajo hasta la celda B23). El resultado es el que se muestra en la siguiente figura. Puede comprobar que pulsando la tecla F9 se recalculan todos los números aleatorios.



3. Seleccionamos nuevamente el rango B4:B23 y hacemos clic en el cuadro de nombres (a la izquierda de la barra de fórmulas) y escribimos el nombre Lista, y pulsamos Enter.

4. Nos situamos en la celda E3 y escribimos la fórmula:

=JERARQUIA(B4;lista)

De esta manera excel "ordenará" el valor aleatorio de B4 en función del orden que ocupe entre el 1 y el 20 ¿Por qué entre el 1 y el 20? Pues porque hemos generado 20 números aleatorios recogidos en el nombre de rango lista.

5. Copiamos la fórmula de E3 hacia abajo hasta la celda E12 y problema resuelto.


Pruebe a pulsar la tecla F9 para generar nuevos números aleatorios. Obviamente puede ocultar la columna B si no le interesa que se vean los 20 números aleatorios resultantes.

47 comentarios:

  1. Muchas Gracias!!! anda de 10!

    ResponderEliminar
  2. Hola, me ha servido de mucho la información para una tarea de estadística, en otra página me encontré el tema de los números aleatorios pero que no se repitieran, con una respuesta de que si no se repiten , entonces, no son aleatorios, ya que siendo aleatorios todos los números tienen la misma posibilidad de ser elegidos...Bueno, siendo así sé como llamarles, el caso es que buscando en google encontré esta página, la he registrado en favoritos para tenerla presente, nuevamente gracias por compartir su saber con todos los que queremos saber sobre excel.

    ResponderEliminar
  3. HOLAAA QUISIERA SABER SI HAY ALGUNA MANERA DE SACAR NUMERO ALEATORIOS PARA 3 COLUMNAS Y QUE SUMADOS EN FILAS DEN 1. ES DECIR ME DEN EL 100% AGRADEZCO LA AYUDA QUE ME PUEDAN BRINDAR

    ResponderEliminar
    Respuestas
    1. .- Primero generas 3 columnas con números aleatorios usando la función aleatorio().
      .- para cada fila:
      En la 4ta columna pones el resultado de dividir el valor de la 1era columna por la suma de las 3.
      En la 5ta columna pones el resultado de dividir el valor de la 2da columna por la suma de las 3.
      En la 6ta columna pones el resultado de dividir el valor de la 3era columna por la suma de las 3.

      saludos

      Eliminar
  4. Pero no se puede hacer números aleatorios que sean enteros? Saludos!

    ResponderEliminar
  5. Brillante... gracias... saludos desde mexico :D

    ResponderEliminar
  6. La formula de JERARQUIA... tiene un error... muestra [;] y debe ser [,].. saludos y muy buena explicación.. me ha servido mucho.. muchas gracias

    armando.camacho@guerrero.gob.mx

    ResponderEliminar
  7. Muchas gracias por tu comentario Armando aunque debo realizar un pequeño apunte: el uso del [;] ó de la [,] depende de cómo tengas configurado el separador de listas en tu ordenador (configuración regional). En mi caso utilizo el [;]
    Muchas gracias igualmente

    ResponderEliminar
  8. no se porque pero, no me sale

    ResponderEliminar
  9. Muy útil y muy bien explicado

    ResponderEliminar
  10. Hola Kiko estoy atorado con un problema, tengo una hoja de excel con 1,500 registros que incluye no de producto, descripcion, ubicacion, cantidad, precio, tipo de producto (A,B,C) y deseo realizar conteos ciclicos de estos productos pero quiero que excel me de 60 productos aleatoriamente diarios los productos tipo A se contaran cada mes los tipo B tres veces por año y los C una vez por año.si quieres te puedo enviar mi archivo para que lo cheques. Saludos y gracias

    ResponderEliminar
    Respuestas
    1. Hola Juan. Efectivamente necesito información más detallada de lo que quieres conseguir para poder ayudarte. Gracias

      Eliminar
  11. como hago esto
    0.00 a o.20

    0.21-0.30

    0.31-0.40

    0.41-0.50

    0.51-0.60

    0.61-0.70

    0.71-0.80

    0.81-0.90

    0.91-1.00

    ResponderEliminar
  12. muy buen truco, ese no me lo sabia :D

    ResponderEliminar
  13. HOLA QUIERO SACAR NUMEROS ALEATORIOS DE 4085 CARROS PARA CHECAR CUAL COLOR SE REPITE MAS Y HACER EN UNA SOLA COLUMNA LOS 4085 SON MUCHOS AUXILIO NO SE COMO HACERLE PARA ESTE PROBLEMA
    MAS BIEN QUIERO SACAR EL NUMERO ALEATORIO DE 8045 CARROS SABIENDO QUE LA MUESTRA QUE TENGO K TOMAR ES DE 367
    GRACIAS

    ResponderEliminar
    Respuestas
    1. No entiendo bien lo que necesitas hacer. Por favor mándame un correo a kiko.rial@gmail.com con un ejemplo y explicación. Gracias

      Eliminar
  14. Toda una noche intentandolo por mi cuenta, otra noche entera buscando en internet como hacerlo y las macros que encontré parecia que eran del mars rover .... y al final la solución era tan sencilla y elegante... Kiko Sos un genio!!

    ResponderEliminar
    Respuestas
    1. Pues muchas gracias. Me alegra haber sido de utilidad. Un saludo

      Eliminar
  15. Buenas noches, deseo que excel genere numeros aleatorios cualesquiera, pero cuya suma sea una cantidad en especifico...

    Se puede hacer eso?

    ResponderEliminar
    Respuestas
    1. Sí. Puedes ver cómo en el post: http://lareboticadeexcel.blogspot.com.es/2012/04/asignar-aleatorio-que-sume-100.html
      Un saludo

      Eliminar
  16. HOLA KIKO, ME PUEDES EXPLICAR COMO ELABORAR UNA SERIE ALEATORIA PARA TRES COLUMNAS CON 20 NUMEROS CADA UNA MUCHAS GRACIAS

    ResponderEliminar
    Respuestas
    1. Seleccionamos el rango A1:C20 y con el rango seleccionado escribimos en la barra de fórmulas =ALEATORIO() y acabamos pulsando Ctrl + Enter.

      Eliminar
  17. Buenas noches muy bueno el post muchas gracias, una duda sin en vez de empezar por 1 se quisiera empezar por 0?, ósea entre 0 y 20, seria posible otra vez gracias y un saludo.

    ResponderEliminar
    Respuestas
    1. Simplemente tienes que añadir un número más a la lista de números aleatorios (en total 21) y escribir la fórmula =JERARQUIA(B4;lista)-1

      Eliminar
  18. buen dia, excelente post. Mi consulta es la siguiente... necesito hacer cartones de 5 numeros para un bingo del 1 al 90, aplicando las formulas de de aleatorio y jerarquia logre realizarlos sin repeticiones, pero me gustaria que esten ordenados de menor a mayor por Ej, 5, 12, 48, 57,68. como lo hago. gracias

    20 noviembre, 2012 13:15

    ResponderEliminar
  19. Utilizando el ejemplo de este post, nos situamos en G3 y escribimos un 1, en G4 un 2 y así hasta generar una lista del 1 al 10 (en tu caso será del 1 al 5)que acabará en la celda G12. Nos situamos en H3 y escribimos la siguiente fórmula: =K.ESIMO.MENOR($E$3:$E$12;G3) y copiamos hacia abajo hasta H12. Y ya está, ordenado de menor a mayor la lista de los 10 números aleatorios.

    ResponderEliminar
  20. Ya intente y cuando seleccione para poner lista se borran los datos me podrías ayudar

    ResponderEliminar
    Respuestas
    1. Necesito que me concretes más lo que te ocurre para poder ayudarte. Gracias

      Eliminar
  21. Eres un crack con todas las c del mundo te mando un enlace de las actividades que he preparado para mi blog educativo gracias a tu ayuda un saludo.

    http://www.orientacionandujar.es/2013/03/15/matematicasprimaria-tablas-de-sumas/

    me gustaria citarte para la proxima entrada y hacer un link en ella

    Estamos en contacto

    ResponderEliminar
    Respuestas
    1. Buenos días. Muchas gracias por tu mensaje y encantado de que me cites si lo estimas oportuno. Un saludo y gracias de nuevo.

      Eliminar
  22. quiero hacer que me genere un aleatorio pero entre un conjunto de numeros repetidos, digamos que tengo 1,1,1,2,5,6,6 y quiero hacer un aleatorio de esos numeros, como hago?

    ResponderEliminar
    Respuestas
    1. Hola Juan. Te contesto en el post de hoy. Un saludo

      Eliminar
  23. con VBA luce mas complejo pero no tenemos que reinventar la pólvora solo reutilizar lo que ya existe como con:

    http://www.excel-avanzado.com/12177/ejemplo-de-numeros-aleatorios-unicos.html

    ResponderEliminar
  24. Buenas tardes, estoy haciendo un bingo, con la función =ALEATORIO.ENTRE(1;75), los números me salen de forma aleatoria pero tengo un problema que se repiten, por ejemplo me sale 2, 15, 26, 2, 17, 23, 37, 45, 2, 17, 64, 72, 4, 2... Necesito saber que condición debo colocar en la formula o como la debo armar para que no se repitan los numeros que ya salieron, como en este ejemplo que el número 2 se repite en cuatro ocasiones, el 17 en dos y así varios números y lo que quiero es que sea aleatorio pero que no se repitan los números que ya salieron. De antemano le doy las gracias por su ayuda. Henry

    ResponderEliminar
    Respuestas
    1. Muy buenas. El planteamiento es el mismo que el expuesto en este post pero en vez de generar 20 números aleatorios debes generar 75 y luego aplicar la función JERARQUIA a tantos números como necesites. Si quieres que te envíe la solución hecha, por favor mándame tu mail a kiko.rial@gmail.com. Un saludo

      Eliminar
  25. hola, buen post pero.. me pueden explicar como hacer esto:
    tengo dos grupos de 10 personas y quiero hacer 10 parejas aletorias, pero sin que
    repitan
    Ejemplo:
    pareja1: 1con 12
    pareja2: 7con19
    patreja3: 4con16 y asi pero que no se repitan las parejas aunque sea solo uno un ejemplo de lo que no se pide¨¨¨ pareja1: 1con12 pareja2:1con16 y asi eso no
    porfavor ayudenme es para un examen!

    ResponderEliminar
  26. Te respondo en el post de hoy. Un saludo

    ResponderEliminar
  27. kiko ayuda, lo he realizado tal cual la explicación pero se me repiten los números aleatorios, en mi caso del 1 al 13, cada vez que doy un enter o f9 efectivamente se cambia pero siguen saliendo repetidos y yo utilizo la formula=Aleatorio.entre(1;13) , luego al ponerle lista y jerarquia hay jerarquias repetidas porque los numero aleatorios se repiten. Le envio a su mail el ejemplo.

    ResponderEliminar
  28. Hola. El problema es que utilizas la función ALEATORIO.ENTRE y por eso se repiten. La función que tienes que utilizar es ALEATORIO, como en el post. Un saludo

    ResponderEliminar
  29. COMO HAGO PARA HACER CARTÓN DE BINGO Y QUE LOS NÚMEROS NO SE REPITAN, TENIENDO EN CUENTA QUE LOS NÚMEROS VAN EN B = 1-15; I =16-30; N = 31-45; G = 46-60 Y O = 61-75, TE AGRADECERÍA MUCHO SI ME AYUDAS

    ResponderEliminar
  30. Por favor mándame tu mail y te hago llegar la solución.

    ResponderEliminar
  31. BUENAS NECESITO CREAR UNA TABLA DONDE:
    1/2= 990
    1= 1600
    2= 1350
    Y CADA VEZ QUE INTRODUZCA UN VALOR DE LOS DE 1, 2, 1/2 EN UNA CELDA ME APAREZCA A LO QUE ES IGUAL ES DECIR 1600, 990 O 1350, QUE FORMULA DEBO UTILIZAR PARA ESO

    ResponderEliminar
    Respuestas
    1. Escribimos en la celda B2 1/2; en B3 1 y en B4 2. En C2 escribimos 990; en C3 1600 y en C4 1350. Supongamos que el valor lo introducimos en D2 y siguientes (D3, D4...) La fórmula que debemos realizar entonces en, por ejemplo, E2 es =BUSCARV(D2;$B$2:$C$4;2;FALSO)
      Podemos copiar esta fórmula hacia abajo (E3, E4...) y de esta manera nos devolverá los valores deseados.

      Eliminar