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.
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.