Notifications
Clear all

Aleatório sem repetir

20 Posts
3 Usuários
0 Reactions
22.5 K Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa Tarde

É possível que com uma formula no excel(sem ser VBA) eu utilize a função ALEATORIOENTRE, sem repetir os números?

Obrigado

 
Postado : 01/09/2011 11:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Julio

Tente com esta fórmula
=INT(ALEATÓRIO()*ALEATÓRIO()*ALEATÓRIO()*1000000)+LIN()/100
Copie e em uma célula e arraste para as outras linhas até onde vc quiser.
Formate para nenhum casa após a vírgula.

Um abraço.

 
Postado : 01/09/2011 12:08 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Patropi, Boa Noite

Cara, de certa forma está certíssimo, mas vamos supor que o eu queira fazer é como se fosse um bingo, eu quero que saia do número 1 até o 30 por exemplo.
Ou então apenas do 10 ao 60.
Sinteticamente seria a formula ALEATORIOENTRE() mas com a condição de não repetir. Porque eu preciso expecificar de qual número a qual que eu necessito.
Será que é possível?

Obrigado

 
Postado : 02/09/2011 6:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia Julio

Disse que não quer com VBA, mas facilita muito.

Envio em anexo uma planilha com código VBA já programado para gerar aleatórios de 1 a 30.
Coloquei instrução na Planilha para vc alterar o valor inicial e o valor final conforme for conveniente p vc.

Não se esqueça de habilitar as macros quando acessar a planilha.

Um abraço.

OBS.:Anexo apagado devido ter sido corrompido na migração do fórum.

 
Postado : 03/09/2011 7:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite,

Uma maneira de fazer com fórmulas exigiria a utilização de colunas auxiliares.
Um exemplo para 30 valores seria o seguinte:

1) Preencha o intervalo "B1:AE1" com números de 1 a 30;
2) Coloque a seguinte fórmula na célula "A1" e copie na coluna "A" até a célula "A31":

=MAIOR(B1:AE1;ALEATÓRIOENTRE(1;31-LIN(A1)))

3) Coloque a seguinte fórmula na célula "B2" e copie nas colunas "B:AE" até a célula "AE31":

=SE(B1<>$A1;B1;0)

Desta maneira você terá 30 números aleatórios no intervalo "A1:A30".

A maneira mais prática, na minha opinião, seria utilizando VBA.
Segue uma outra sugestão de código:

Sub Sorteio()
    Dim Vetor()
    Dim Qt As Long
    Dim i As Long
    Dim n As Long
    Dim Max As Long
      
    Columns("A").Clear
    Qt = [C1].Value
    Max = [C2].Value
    If Qt > Max Then
        MsgBox "O valor da célula C1 não pode ser maior que o da célula C2!"
        Exit Sub
    End If
    ReDim Vetor(Max)
    For i = 1 To Max
        Vetor(i) = i
    Next
    
    For i = 1 To Qt
        n = Int(Rnd * (Max - i + 1)) + 1
        Vetor(0) = Vetor(n + i - 1)
        Vetor(n + i - 1) = Vetor(i)
        Vetor(i) = Vetor(0)
        Cells(i, 1).Value = Vetor(i)
    Next
End Sub

Na célula "C1" da planilha você deve colocar a quantidade de números a serem gerados, 30 no seu exemplo, e na célula "C2" o maior número, que também é 30 no seu exemplo.

Abraço

 
Postado : 04/09/2011 9:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cara, muito bom, obrigado pela boa vontade!!!

vai me ajudar 100%!!!!

 
Postado : 05/09/2011 2:00 pm
(@vgalax)
Posts: 1
New Member
 

Também procurava por uma função que não gerasse repetidos até 245 e esta fórmula é simplesmente perfeita. Parabéns a iniciativa do colega em dividir os seus conhecimentos.

 
Postado : 20/11/2011 8:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vgalax,

No modelo anexo demonstro como gerar lista aleatõria (entre 1 e x) sem necessidade de preencher os valores. Basta definir o x em A1 e a listagem é produzida.

Sem macro, Só fórmulas. Excel2003.

Abs,

p.s.- A fórmula do Patropi não garante registros únicos e a solução do Jvalq confesso que não entendi.

 
Postado : 22/11/2011 7:06 am
(@cristina)
Posts: 12
Active Member
 

Bom dia Julio

Disse que não quer com VBA, mas facilita muito.

Envio em anexo uma planilha com código VBA já programado para gerar aleatórios de 1 a 30.
Coloquei instrução na Planilha para vc alterar o valor inicial e o valor final conforme for conveniente p vc.

Não se esqueça de habilitar as macros quando acessar a planilha.

Um abraço.

Olá, boa tarde,
Seria possível me enviar o anexo da planilha que tem o código VBA pois estou tentando gerar números aleatórios alterando também valores. Ficaria muito agradecida

 
Postado : 04/04/2013 2:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Cristina

Seja bem vinda ao Planilhando!

Para baixar a planilha, clique no link abaixo:

http://www.sendspace.com/file/koxt43

Se a resposta foi útil, clique na mãozinha que fica do lado da ferramenta Citar.

Um abraço.

 
Postado : 04/04/2013 2:54 pm
(@cristina)
Posts: 12
Active Member
 

Boa tarde Patropi,
Estou com duas planilhas que estou tendo dificuldades para desenvolver.
Será que você poderia me ajudar? Posso enviá-las diretamente no e-mail com as explicações necessárias?
Solicitei uma ajuda mas a pessoa me respondeu que não seria possível eu fazer o que preciso.
Queria que ao menos na 1ª planilha, que é onde preciso de uma macro para gerar números aleatórios tivesse um jeito.
Obrigada.

 
Postado : 16/04/2013 10:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cristina,

Por fórmulas é possível fazer o que vc precisa. Poste sua planilha para que outros membros do fórum possam também ter acesso à solução.

Se quiser ir à diante, avise.

Abs,

 
Postado : 16/04/2013 11:40 am
(@cristina)
Posts: 12
Active Member
 

Boa tarde,
Segue uma planilha com as explicações necessárias.
Lembrando que essa é apenas a 2ª planilha.
A outra tentei usar uma macro do excelmax soluções, mas ela não me permite alterar os valores que preciso.
Essa é a macro que lhe falei:

Sub Sorteio_de_Numeros()
Dim a, b, c(25)
Range("A2:O10000").ClearContents

s = InputBox("Digite a qtdade de sorteios que deseja fazer")
d = InputBox("Digite a qtdade de dezenas")

For lin = 2 To s + 1
For a = 1 To 25
c(a) = a
Next
For a = 1 To d
b = 1 + Int(Rnd * (25 - a))
Cells(lin, a).Select
Cells(lin, a).Value = c(b)
c(b) = c(26 - a)
Next
Next
Range("A2").Select
End Sub

Vou fazer uma explicação rápida do que pretendo:

1ª planilha:

Quero gerar uma sequencia de números aleatórios dentro de um intervalo com algumas condições:
preciso saber quantas sequencias de 3 números dentro do intervalo eu consigo sem que nenhuma sequência se repita
o intervalo seria de 05 números mas preciso alterar esses intervalos (por exemplo: entre 1 e 5; entre 6 e 10; entre 11 e 20; entre 21 e 25)
quero poder alterar os intervalos na macro para que me gere sequências dentro de cada intervalo (a macro que consegui só gera dentro do intervalo começando por 1. Preciso que o intervalo inicie também a partir de outros números)

2ª planilha: (estou enviando o anexo para que possa ser entendido melhor)

 
Postado : 17/04/2013 10:39 am
(@cristina)
Posts: 12
Active Member
 

Boa tarde,
Vocês conseguiram avaliar a planilha?

 
Postado : 18/04/2013 2:21 pm
(@cristina)
Posts: 12
Active Member
 

Pessoal, boa tarde,
Por favor, vocês conseguiram analisar a minha planilha?
Gostaria de obter alguma resposta.

 
Postado : 23/04/2013 10:19 am
Página 1 / 2