Números aleatorios dentro de un rango

2 envíos / 0 nuevos
Último envío
antraxhol
Imagen de antraxhol
Offline
última acción: Hace 5 años 11 meses
alta: 14/05/2018 - 06:37
Puntos: 25
Números aleatorios dentro de un rango

Hola
Necesito generar 15 números aleatorios sin que se repitan, dentro del rango L6:AA21 con un botón.....
Al ser el rango mayor a la cantidad de números muchas celdas se tienen que quedar en blanco. La ubicación de los números también tiene que ser al azar...Algo asi como generar la ubicacion de las minas en el juego de "buscaminas".

Si es posible, generar palabras (poder indicar qué palabras) en lugar de las cifras.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 17 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
para generar los números

para generar los números aleatorios tienes la función RND

tunumero=Rnd

Esta función genera un número entre 0 y 1 

Si quieres generarar un número entero entre dos valores, también puedes utilizar la funcion Aleatorio.Entre de Excel (en vba es randbetween):

tunumero=Application.WorksheetFunction.RandBetween(desde,hasta)

 

Para comprobar si se repiten o no, tendrás que ir guardando los números en algún lugar para poder comparar cada nuevo número con los existentes. Esto lo puedes hacer por ejemplo en un rango auxiliar en una hoja de cálculo, o en una variable tipo matriz.

En tu caso, que ya sabes de antemano que vas a tener 15 valores puedes definir una variable para tus resultados así:

Dim MisResultados(15)

 

Ejemplo:

Sub testaleatorios()

    Const NumerosaGenerar = 15

    Const desde = 1

    Const hasta = 100

    

    Dim MisResultados(NumerosaGenerar)

    Dim i, j  ' contadores


    For i = 1 To NumerosaGenerar

        MisResultados(i) = Application.WorksheetFunction.RandBetween(desde, hasta)

        For j = 1 To i - 1  ' comprobamos los valores anteriores

            If MisResultados(j) = MisResultados(i) Then

                'valor repetido

                i = i - 1   'reduzco el contador para volver a generar el valor i

                Exit For

            End If

        Next

    Next

' una vez generados ya los puedes utilizar para lo que quieras, aquí sólo los muestro en la ventana inmediato  

    For i = 1 To NumerosaGenerar

        Debug.Print i; MisResultados(i)

    Next

End Sub

 

 

 

 

 

 

------
Ya sé Excel, pero necesito más.