Notifications
Clear all

Sorteio de números pré-definidos

6 Posts
2 Usuários
0 Reactions
3,486 Visualizações
(@tadeulopes)
Posts: 5
Active Member
Topic starter
 

Olá galera !

Estou tentando criar um macro que gere um número aleatório para sorteio. Estou usando:

=Int((7 - 1 + 1) * Rnd + 1)

Mas o meu problema é que ele gera um número aleatório de 1 a 7, e eu queria por exemplo que ele escolhe somente entre 1,3,7 por exemplo, e não de 1 a 7.

Alguém tem alguma dica ?

 
Postado : 11/04/2012 6:20 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Precisa disso somente por VBA?

A2=ALEATÓRIO()*7, arraste para B2 e C2, forte as células.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/04/2012 6:25 am
(@tadeulopes)
Posts: 5
Active Member
Topic starter
 

Bom dia!!

Precisa disso somente por VBA?

A2=ALEATÓRIO()*7, arraste para B2 e C2, forte as células.

Att

Bom dia !!!

Então, eu queria fazer por VBA, porque não função ALEATÓRIO, o número muda a cada alteração na planilha, correto ?
E com o [A2].Value=Int((7 - 1 + 1) * Rnd + 1), o VBA vai me gerar um número aleatório que não muda com as alterações da planilha. Só queria poder escolher os números que quero que ele gere.

 
Postado : 11/04/2012 6:30 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tente algo assim

Sub seleciona()
'Declara um Array de 4 posições
'Como a primeira posição é a posição zero,
'Indicamos o tamanho como 3, o que significa
'da posição 0 até a posição 3 = 4 elementos.
Dim Nums(3) As Long

'Atribuímos valores para os Nums

Nums(0) = 1
Nums(1) = 3
Nums(2) = 5
Nums(3) = 7
Randomize
'Adiciona os valores nas celulas B1 a B5
For i = 1 To 5
Range("B" & i).Value = Nums(CInt(Rnd() * 3))
Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/04/2012 7:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Exemplo não tão sofisticado como o do reinaldo.

Sub randNum()
Range("A1").Formula = Rnd() * 7

Range("A2").Formula = Rnd() * 7

Range("A3").Formula = Rnd() * 7
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 11/04/2012 8:06 pm
(@tadeulopes)
Posts: 5
Active Member
Topic starter
 

Olá galera, obrigado pela ajuda. A dica do Reinaldo faz exatamente isso, obrigado !
Você determina no Array os números que deseja e esses valores serão colocados nas células que você determinar no "Range".

Para quem não tiver necessidade de gerar números específicos, a dica do alexandrevba imprimi nas células do "Range" também números aleatórios, mas sem você poder escolher (pré-definidos). São números aleatórios gerados pelo vba.

Obrigado pela ajuda Reinaldo e alexandrevba !

 
Postado : 14/04/2012 7:27 pm