aleatorio

27/02/2007 - 23:54 por Johann Romero | Informe spam
Como puedo hacer lo siguiente


una lista del 1 al 10
1
2
3
4
5
6
7
8
9
10

y que al costado, digamos en la columna B, me muestre un aleatorio del 1 al
10, pero sin que ninguno se repita.

Lo que quiero es una lista en orden aleatorio, sin que se repita los
numeros.

Gracias.

Preguntas similare

Leer las respuestas

#1 AnSanVal
28/02/2007 - 00:34 | Informe spam
Hola Johann.

En un módulo oridinario Copia/Pega:

Sub generador()
Dim fila As Integer
For fila = 1 To 10
rep:
Cells(fila, 1).Value = fila
Cells(fila, 2).Value = Int(9 * Rnd) + 1
If Worksheets(2).Range("B1:B" & fila).Find(Cells(fila, _
2).Value).Row < fila Then GoTo rep
Next fila
End Sub

Saludos desde Tenerife.
************************
"Johann Romero" escribió en el mensaje
news:
Como puedo hacer lo siguiente


una lista del 1 al 10
1
2
3
4
5
6
7
8
9
10

y que al costado, digamos en la columna B, me muestre un aleatorio del 1
al 10, pero sin que ninguno se repita.

Lo que quiero es una lista en orden aleatorio, sin que se repita los
numeros.

Gracias.

Respuesta Responder a este mensaje
#2 AnSanVal
28/02/2007 - 00:37 | Informe spam
Cambia la fila: Cells(fila, 2).Value = Int(9 * Rnd) + 1
por esta otra: Cells(fila, 2).Value = Int(10 * Rnd) + 1

Saludos.

"Johann Romero" escribió en el mensaje
news:
Como puedo hacer lo siguiente


una lista del 1 al 10
1
2
3
4
5
6
7
8
9
10

y que al costado, digamos en la columna B, me muestre un aleatorio del 1
al 10, pero sin que ninguno se repita.

Lo que quiero es una lista en orden aleatorio, sin que se repita los
numeros.

Gracias.

Respuesta Responder a este mensaje
#3 Gavillas
06/03/2007 - 11:49 | Informe spam
Hola grupo, hola AnSanVal:
He probado tu codigo, expuesto abajo, con la modificación incluida y
cambiando If Worksheets(1), antes era (2).
La cosa funciona, pero suele repetir uno de los numeros aleatorios generados
y, por tanto, omitir otro.
Qué puede haber fallado.

Gracias, Gavillas.
Sub generador()
Dim fila As Integer
For fila = 1 To 10
rep:
Cells(fila, 1).Value = fila
Cells(fila, 2).Value = Int(10 * Rnd) + 1
If Worksheets(1).Range("B1:B" & fila).Find(Cells(fila, 2).Value).Row <
fila Then GoTo rep
Next fila
End Sub


"AnSanVal" escribió en el mensaje
news:#
Cambia la fila: Cells(fila, 2).Value = Int(9 * Rnd) + 1
por esta otra: Cells(fila, 2).Value = Int(10 * Rnd) + 1

Saludos.

"Johann Romero" escribió en el mensaje
news:
> Como puedo hacer lo siguiente
>
>
> una lista del 1 al 10
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
>
> y que al costado, digamos en la columna B, me muestre un aleatorio del 1
> al 10, pero sin que ninguno se repita.
>
> Lo que quiero es una lista en orden aleatorio, sin que se repita los
> numeros.
>
> Gracias.
>


Respuesta Responder a este mensaje
#4 L. Garcia
06/03/2007 - 14:01 | Informe spam
Hola:

No veo el hilo completo, pero supongo que buscas 'reordenar' aleatoriamente
una lista :-)

Yo haria algo tal como asi:

Sub Generador()
Dim nFila As Integer
Dim NumFilas As Integer
Dim clOrden As New Collection
Dim nAleat As Integer

NumFilas = 10
For nFila = 1 To NumFilas
clOrden.Add nFila
Next nFila

Randomize
For nFila = 1 To NumFilas
nAleat = Int(Rnd() * (NumFilas - nFila+1))+1
Cells(nFila,2).Value = Cells(clOrden(nAleat),1).Value
clOrden.Remove nAleat
Next nFila
Set clOrden = Nothing
End Sub

Espero que te sirva

Saludos

"Gavillas" escribió en el mensaje
news:
Hola grupo, hola AnSanVal:
He probado tu codigo, expuesto abajo, con la modificación incluida y
cambiando If Worksheets(1), antes era (2).
La cosa funciona, pero suele repetir uno de los numeros aleatorios


generados
y, por tanto, omitir otro.
Qué puede haber fallado.

Gracias, Gavillas.
Sub generador()
Dim fila As Integer
For fila = 1 To 10
rep:
Cells(fila, 1).Value = fila
Cells(fila, 2).Value = Int(10 * Rnd) + 1
If Worksheets(1).Range("B1:B" & fila).Find(Cells(fila, 2).Value).Row <
fila Then GoTo rep
Next fila
End Sub


"AnSanVal" escribió en el mensaje
news:#
> Cambia la fila: Cells(fila, 2).Value = Int(9 * Rnd) + 1
> por esta otra: Cells(fila, 2).Value = Int(10 * Rnd) + 1
>
> Saludos.
>
> "Johann Romero" escribió en el mensaje
> news:
> > Como puedo hacer lo siguiente
> >
> >
> > una lista del 1 al 10
> > 1
> > 2
> > 3
> > 4
> > 5
> > 6
> > 7
> > 8
> > 9
> > 10
> >
> > y que al costado, digamos en la columna B, me muestre un aleatorio del


1
> > al 10, pero sin que ninguno se repita.
> >
> > Lo que quiero es una lista en orden aleatorio, sin que se repita los
> > numeros.
> >
> > Gracias.
> >
>
>


Respuesta Responder a este mensaje
#5 Gavillas
06/03/2007 - 18:30 | Informe spam
Gracias L. Garcia. Con permiso de AnSanVal, has acertado con el hilo y con
la solución.
Funciona.

Saludos, Gavillas.

"L. Garcia" escribió en el mensaje
news:#Pp06A$
Hola:

No veo el hilo completo, pero supongo que buscas 'reordenar'


aleatoriamente
una lista :-)

Yo haria algo tal como asi:

Sub Generador()
Dim nFila As Integer
Dim NumFilas As Integer
Dim clOrden As New Collection
Dim nAleat As Integer

NumFilas = 10
For nFila = 1 To NumFilas
clOrden.Add nFila
Next nFila

Randomize
For nFila = 1 To NumFilas
nAleat = Int(Rnd() * (NumFilas - nFila+1))+1
Cells(nFila,2).Value = Cells(clOrden(nAleat),1).Value
clOrden.Remove nAleat
Next nFila
Set clOrden = Nothing
End Sub

Espero que te sirva

Saludos

"Gavillas" escribió en el mensaje
news:
> Hola grupo, hola AnSanVal:
> He probado tu codigo, expuesto abajo, con la modificación incluida y
> cambiando If Worksheets(1), antes era (2).
> La cosa funciona, pero suele repetir uno de los numeros aleatorios
generados
> y, por tanto, omitir otro.
> Qué puede haber fallado.
>
> Gracias, Gavillas.
> Sub generador()
> Dim fila As Integer
> For fila = 1 To 10
> rep:
> Cells(fila, 1).Value = fila
> Cells(fila, 2).Value = Int(10 * Rnd) + 1
> If Worksheets(1).Range("B1:B" & fila).Find(Cells(fila, 2).Value).Row


<
> fila Then GoTo rep
> Next fila
> End Sub
>
>
> "AnSanVal" escribió en el mensaje
> news:#
> > Cambia la fila: Cells(fila, 2).Value = Int(9 * Rnd) + 1
> > por esta otra: Cells(fila, 2).Value = Int(10 * Rnd) + 1
> >
> > Saludos.
> >
> > "Johann Romero" escribió en el mensaje
> > news:
> > > Como puedo hacer lo siguiente
> > >
> > >
> > > una lista del 1 al 10
> > > 1
> > > 2
> > > 3
> > > 4
> > > 5
> > > 6
> > > 7
> > > 8
> > > 9
> > > 10
> > >
> > > y que al costado, digamos en la columna B, me muestre un aleatorio


del
1
> > > al 10, pero sin que ninguno se repita.
> > >
> > > Lo que quiero es una lista en orden aleatorio, sin que se repita los
> > > numeros.
> > >
> > > Gracias.
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida