Está en la página 1de 2

786

258
467
782
6
694
369
781
170
351
Sub unicos1()
Dim i As Integer, j As Integer
Dim A() As Long
Dim esta As Boolean
Dim x As Long, y As Long, z As Long, num As Long
x = Application.InputBox(prompt:="Entre el nmero aleatorio inicial" _
, Title:="Generador de Nmeros Aleatorios", Default:=1, Type:=1)
y = Application.InputBox(prompt:="Entre el nmero aleatorio final" _
, Title:="Generador de Nmeros Aleatorios", Default:=1000, Type:=1)
z = Application.InputBox(prompt:="Cuantos nmeros aleatorios desea generar?" _
& " (<15000)?" _
, Title:="Generador de Nmeros Aleatorios", Default:=100, Type:=1)
If z = 0 Then Exit Sub
If z > 15000 Then z = 15000
If z > y - x + 1 Then
MsgBox "!Ha especificado ms nmeros " _
& "de los que son posibles en el rango!"
Exit Sub
End If
ReDim A(z)
Randomize
A(1) = Int((y - x + 1) * Rnd + x)
For i = 2 To z
Do
num = Int((y - x + 1) * Rnd + x)
esta = False
For j = 1 To i - 1
If num = A(j) Then esta = True: Exit For
Next j
Loop While esta
A(i) = num
Next i
For i = 1 To z
Cells(i, 2) = A(i)
Next i
End Sub
Sub Limpia()
Range("B1").CurrentRegion.ClearContents
Range("A1").Select
End Sub
Generacin de nmeros aleatorios enteros nicos (sin repeticin)
Son dos macros muy parecidas que generan nmeros
aleatorios enteros nicos (sin repeticin).
Opciones
Limpia
Genera Aleatoris nicos 1
Genera Aleatoris nicos 2
Sub unicos2()
Dim x As Long, y As Long, z As Long, num As Long
Dim control As Boolean
Dim i As Long
Dim celda As Range
x = Application.InputBox("Entre el nmero aleatorio inicial" _
, "Generador de Nmeros Aleatorios", 1, , , , , 1)
y = Application.InputBox("Entre el nmero aleatorio final" _
, Title:="Generador de Nmeros Aleatorios", Default:=1000, Type:=1) , "Generador de Nmeros Aleatorios", 1000, , , , , 1)
z = Application.InputBox(prompt:="Cuantos nmeros aleatorios desea generar?" _ z = Application.InputBox("Cuantos nmeros aleatorios desea generar?" _
& " (<15000)?" _
, Title:="Generador de Nmeros Aleatorios", Default:=100, Type:=1) , "Generador de Nmeros Aleatorios", 100, , , , , 1)
If z = 0 Then Exit Sub
If z > 15000 Then z = 15000
If z > y - x + 1 Then
MsgBox "!Ha especificado ms nmeros " _
& "de los que son posibles en el rango!"
Exit Sub
End If
Randomize
Cells(1, 2) = Int((y - x + 1) * Rnd + x)
For i = 2 To z
Do
control = False
Randomize
num = Int((y - x + 1) * Rnd + x)
Set celda = Range("b1", Range("b1").End(xlDown).Address). _
Find(num, LookIn:=xlValues, LookAt:=xlWhole)
If Not (celda Is Nothing) Then
control = True
End If
Loop Until Not control
Cells(i, 2) = num
Next
End Sub
Generacin de nmeros aleatorios enteros nicos (sin repeticin)
Son dos macros muy parecidas que generan nmeros
aleatorios enteros nicos (sin repeticin).

También podría gustarte