jueves, 22 de noviembre de 2012

Generar Nombres Aleatorios sin Repetición

"Tengo una lista con 50 nombres de poblaciones y necesito generar una muestra aleatoria de 6 de ellas pero sin que se repita ningún nombre".

No hay problema. Partimos del siguiente ejemplo:


En el rango G3:G22 tenemos la lista de poblaciones (utilizaremos 20 en vez de 50). En el rango C3:C8 es donde finalmente aparecerán la muestra aleatoria de 6 ciudades sin repetición.

Empezamos seleccionando el rango F3:F22 y con el rango seleccionado escribimos la fórmula: =ALEATORIO()  y acabamos pulsando Ctrl + Enter. De esta manera, hemos generado 20 números aleatorios comprendidos entre 0 y 1. Con el rango seleccionado (F3:F22) nos situamos en el cuadro de nombres (a la izquierda de la barra de fórmulas) hacemos clic dentro y escribimos el nombre numaleatorio y pulsamos Enter.

Nos situamos ahora en la celda E3 y escribimos la siguiente fórmula:
=JERARQUIA(F3;numaleatorio)

De esta manera estamos otorgando un número (entero) de orden a cada uno de los números aleatorios, como se puede ver a continuación:


Seleccionamos el rango E3:G22 y vamos al cuadro de nombres y le asignamos el nombre (lo escribimos) Ciudades. Ya sólo nos queda situarnos en la celda C3 y escribir la siguiente fórmula:
=BUSCARV(B3;ciudades;3;)    y la copiamos hasta C8.


Puede probar a pulsar la tecla F9 y se generarán nuevas muestras sin repetición.

20 comentarios:

  1. Saludos permiteme decirle que es un exelente blog, brinda una gran ayuda y por eso gracias, le comento que tengo que elaborar un acumulados donde los datos se encuentran es otras hojas de exel, el problema para elaborarlo se incrementa haciendo de mi saber que no siempre son las mismas hojas de donde obtendre los datos para el acumulado, he intentado hacerlo con tablas dinamicas pero me quedo frito por que aun no le entiendo mucho, podrias ayudarme al respecto.

    --jeaby0@hotmail.com

    ResponderEliminar
    Respuestas
    1. Buenas tardes. muchas gracias por tu comentario. Me temo que necesito información más específica de lo que quieres hacer para poder ayudarte. Un saludo

      Eliminar
  2. Felicitaciones por el blog, no lo conocía y veo que hay muchas entradas interesantes.

    La función aleatorio, ¿está confirmado que nunca puede repetir un valor? Es que he probado con aleatorio.entre y sí repite.

    En este caso, ¿se podría hacer utilizando la función =ALEATORIO.ENTRE(0;50)por ejemplo? enseguida aleatorio.entre repite algún valor y jerarquía les otorga la misma clasificación, con lo que no podría aplicar la solución propuesta (si no utilizamos la parte de buscarv, me refiero).

    Muchas gracias

    ResponderEliminar
  3. La función ALEATORIO genera un número entre 0 y 1 de hasta 18 decimales, por lo que es casi imposible que repita un número. Por eso utilizamos dicha función y no ALEATORIO.ENTRE que sí los repite.

    ResponderEliminar
  4. Hola, felicitaciones por el blog! es muy útil.
    Estoy intentando hacer algo pero no sé si resultará usando Jerarquía...
    Tengo 57000 números, y quiero asignar al azar 80 números a 485 personas. A su vez, algunas personas tienen, dentro de esos 80 números, 6 que no son al azar sino que son específicamente asignados.
    ¿Tal vez podría sacar primero los números específicos de la lista de 57000, y después distribuir el remanente poniéndolos en una lista como se hizo en este caso con Ciudades?
    Gracias!

    ResponderEliminar
  5. Hola...
    He creado una tabla para jugar a pádel (modalidad americana) y he ordenado aleatoriamente a los 8 jugadores aleatoriamente. El problema que tengo es que cuando introduzco la puntuación o F9 me vuelve a reordenar a los jugadores. Entonces me gustaría que me ayudaran a resolver el problema. Y ya sería una pasada, el generar un botón donde una vez acabado el torneo, volviera a empezar de nuevo el marcador. Un saludo y muchas gracias por el aporte porque me ha ayudado a resolver el problema de los jugadores.

    ResponderEliminar
    Respuestas
    1. Hola Manuel. Por favor, mándame un archivo de excel a kiko.rial@gmail.com con la explicación de lo que necesitas e intentaré resolverlo. Un saludo

      Eliminar
    2. Hola Kiko, te he mandado mi excel pero no se si te ha llegado. Un saludo.

      Eliminar
    3. Hola Manuel. Pues me tienes que disculpar pero no encuentro tu mensaje ¿me lo puedes volver a mandar? Acuérdate de mandarme las explicaciones por pasos de lo que quieres conseguir exactamente. Gracias

      Eliminar
  6. Hola Kiko, anticipadamente muchas gracias. deseo ordenar mis canciones en una lista de tal forma que un cantante se vuelva a repetir cada 15 canciones pero con otro tema

    ResponderEliminar
    Respuestas
    1. Hola Alberto. Perdón por la tardanza pero tocaba vacaciones :-) Necesitaría que me hieras llegar un archivo a kiko.rial@gmail.com de cómo tienes diseñado tu tabla de cantantes y canciones. Un saludo

      Eliminar
    2. Hola Kiko Rial, mi pregunta es sobre números aleatorios no repetidos y yo ya lo he intentado barias veces pero siempre con el mismo resultado que se repiten ; yo lo que quiero es hacer una tabla de números aleatorios y que no se repitan ya que lo suele hacer y eso no me sirve de esa manera lo que quiero es que no se repitan y yo la quiero usar para el euromillon aunque te parezca un poco extraño pero es para lo que la quiero usar, y yo utilizo números del 1 al 50 pero se suelen repetir pero he optado por solo utilizar solo 5 números que son los que el boleto exige para poder participar aparte de los 2 que son las estrella que esos no me preocupan mucho, lo que realmente quiero es que salgan sin repetición los 5 que yo le pido, y la formula que yo he usado es, Aleatorios. Entre (1; 50) y me da un numero al azar y de ese expando por ejemplo de A2 hasta A6 y se generan 5 números distintos pero avece se duplican y eso es lo que estoy intentando evitar ya que a lo mejor sale 48 34 23 12 12 y eso es lo que no quiero y de momento no lo consigo, pero que quede claro que yo soy nuevo en esto de Excel y por eso te lo pregunto sin ánimos de molestar solo quiero aprender. Tienes alguna solución y me la podrías decir, gracias esperare alguna respuesta…

      Eliminar
    3. Buenos días. La respuesta la tienes en el post de este blog: Generar números Aleatorios sin Repetición. En el ejemplo lo único que tendrás que modificar es que en vez de ser una lista de 20 números tendrá que ser una lista de 50 números. Este es el link al post:
      http://lareboticadeexcel.blogspot.com.es/2010/05/generar-numeros-aleatorios-sin.html

      Eliminar
  7. Gracias por tu pronta respuesta, y así lo haré mirare el post y tomare nota de todo y lo empezare a practicar para intentar conseguir lo que ya te he mencionado, gracias y espero que si algún día te decidas a hacer videos tutoriales puedes tener por seguro que me tendrás como un subscritor de tu canal, y simas se despide envés de anónimo (DOMINGO GARCIA),gracias y un saludo…

    ResponderEliminar
  8. por que aparece ese numero 3 a lo ultimo de la formula?

    ResponderEliminar
    Respuestas
    1. Porque dentro del rango al que hemos denominado Ciudades la columna en la que aparece el nombre de la ciudad es la 3, que es la información que precisamente queremos obtener con la función BUSCARV

      Eliminar
  9. Buenos días Kiko,
    A ver si me puedes ayudar a ordenar lo que tengo que juntar de diferentes archivos. Intento explicarte:
    Tengo un Archivo con un total de oficinas, otro archivo con solo las oficinas a las que tengo que hacer seguimiento, y un ultimo archivo con la producción del total de oficinas.
    Lo que tengo que obtener es un solo archivo con solo las oficinas que tengo que hacer seguimiento y los productos específicos. Lo he intentado con el BuscarV y después hacer una tabla dinámica, me gustaría saber tu opinión por si hay algún paso mas fácil de entender.
    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Carlos. Puedes mandarme un ejemplo de lo que tienes y de lo que necesitas conseguir a kiko.rial@gmail.com?
      Un saludo

      Eliminar
  10. Hola kiko quisiera aplicar esto para asignar un rol de guardias entre residentes de medicina en a lo largo de la semana esto puede realizarse de esta forma ???

    ResponderEliminar