You are on page 1of 2

Op...

Generación de números aleatorios enteros únicos (sin repetición)

● Limpia Son dos macros muy parecidas que gen


aleatorios enteros únicos (sin repetición)
Genera Aleatoris Únicos 1

Genera Aleatoris Únicos 2

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 número aleatorio inicial" _
, Title:="Generador de Números Aleatorios", Default:=1, Type:=1)
y = Application.InputBox(prompt:="Entre el número aleatorio final" _
, Title:="Generador de Números Aleatorios", Default:=1000, Type:=1)
z = Application.InputBox(prompt:="¿Cuantos números aleatorios desea generar?" _
& " (<15000)?" _
, Title:="Generador de Números 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 más números " _
& "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
teros únicos (sin repetición)

on dos macros muy parecidas que generan números


eatorios enteros únicos (sin repetición).

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 número aleatorio inicial" _
, "Generador de Números Aleatorios", 1, , , , , 1)
y = Application.InputBox("Entre el número aleatorio final" _
1000, Type:=1) , "Generador de Números Aleatorios", 1000, , , , , 1)
orios desea generar?" _ z = Application.InputBox("¿Cuantos números aleatorios desea generar?" _
& " (<15000)?" _
100, Type:=1) , "Generador de Números Aleatorios", 100, , , , , 1)
If z = 0 Then Exit Sub
If z > 15000 Then z = 15000
If z > y - x + 1 Then
MsgBox "!Ha especificado más números " _
& "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

You might also like