UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

Sólo por unos días suban sus archivos a Dropbox y dejan link en sus consultas. Gracias.

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

antraxhol


Hola
Necesito generar 15 números aleatorios( 1-15) sin que se repitan, dentro del rango L6:AA21.....
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.
Gracias.

excelboy

avatar
Hola @antraxhol!

Intenta con el siguiente código:

Código:
Option Explicit

Sub Aleatorios()
Dim rango As Range
Dim items As Integer

Set rango = Range("L6:AA21")
Debug.Print Time
Application.ScreenUpdating = False
While items <> 15
  GeneraAleatorios rango
  items = rango.SpecialCells(xlCellTypeConstants, xlNumbers).Count
Wend
Application.ScreenUpdating = True
Debug.Print Time
End Sub

Sub GeneraAleatorios(rango As Range)
Dim celda As Range
Dim i As Integer
Dim cache As String
Dim aux As String
Dim strTexto As String

strTexto = "x"
rango.Clear
rango.FormulaR1C1 = "=If(RandBetween(1, 3)=1,RandBetween(1, 15)," & """" & strTexto & """" & ")"

For i = 1 To 5
  Application.Calculate
Next

rango.Value = rango.Value

On Error Resume Next
rango.SpecialCells(xlCellTypeConstants, 2).Clear
On Error GoTo 0

For Each celda In rango
  If celda <> "" Then
    aux = "-" & celda & "-"
    If InStr(1, cache, celda & "-", vbTextCompare) = 0 Then
      cache = cache & celda & "-"
    Else
      celda.Clear
    End If
  Else
  End If
Next
End Sub

Saludos!

http://mexcelmx.blogspot.mx/

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.