Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Gerar números decimais aleatórios sem repetição

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
ygordaniela
Colaborador
Colaborador
Mensagens: 16
Registrado em: Qua Abr 25, 2018 7:49 pm

Gerar números decimais aleatórios sem repetição

Mensagem por ygordaniela »

Bom Tarde!
Pessoal estou prescindo de uma rotina que geri números aleatórios decimais em rol com 30 números que vai de 100 a 102,9 preciso criar aleatoriamente um conjunto com 8 números e sem repetição
EX 100,5 /102,3/ 100/ 101,9/ 102/ 100,1/ 102,6/ 100,8 Eu encontrei uma rotina na internet que faz isto com números inteiro e pelo que eu entendi tem que começar no numero 1 ser q tem com adaptar para minha necessidade se alguém poder me ajudar ficarei muito grato!

Código: Selecionar todos

Sub Aleatório()

    Dim N, N01, N02, N03, N04, N05 As Integer
    N = 10
        
    ActiveSheet.Range("Q09").Value = Int((N * Rnd) + 1)
    ActiveSheet.Range("Q10").Value = Int((N * Rnd) + 1)
Subir1:
    N01 = Range("Q09").Value
    N02 = Range("Q10").Value
    If N02 = N01 Then
       ActiveSheet.Range("Q10").Value = Int((N * Rnd) + 1)
         If N01 = N02 Then
            GoTo Subir1
         End If
    End If
    
    ActiveSheet.Range("Q11").Value = Int((N * Rnd) + 1)
Subir2:
    N03 = Range("Q11").Value
    If (N03 = N01 Or N03 = N02) Then
       ActiveSheet.Range("Q11").Value = Int((N * Rnd) + 1)
         If (N03 = N01 Or N03 = N02) Then
            GoTo Subir2
         End If
    End If

ActiveSheet.Range("Q12").Value = Int((N * Rnd) + 1)
Subir3:
    N04 = Range("Q12").Value
    If (N04 = N01 Or N04 = N02 Or N04 = N03) Then
       ActiveSheet.Range("Q12").Value = Int((N * Rnd) + 1)
         If (N04 = N01 Or N04 = N02 Or N04 = N03) Then
            GoTo Subir3
         End If
    End If
    
    ActiveSheet.Range("Q13").Value = Int((N * Rnd) + 1)
Subir4:
    N05 = Range("Q13").Value
    If (N05 = N01 Or N05 = N02 Or N05 = N03 Or N05 = N04) Then
       ActiveSheet.Range("Q13").Value = Int((N * Rnd) + 1)
         If (N05 = N01 Or N05 = N02 Or N05 = N03 Or N05 = N04) Then
            GoTo Subir4
         End If
    End If

End Sub
Editado pela última vez por ygordaniela em Qui Set 19, 2019 12:32 am, em um total de 2 vezes.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


JValq
Manda bem
Manda bem
Mensagens: 101
Registrado em: Qua Abr 27, 2011 7:34 pm
Localização: São Paulo/SP

Re: Gerar números decimais aleatórios sem repetição

Mensagem por JValq »

Bom dia!

Veja se este código te ajuda:

Código: Selecionar todos

Sub Gerar()
    Dim Num As Double
    Dim q As Integer
    Dim Colecao As New Collection
    Dim n(7)
    
    On Error GoTo ERRO
    q = 1
    Do
        Num = Rnd * (102.9 - 100) + 100
        Colecao.Add CDbl(Format(Num, "#.0")), Format(Num, "#.0")
        q = q + 1
    Loop While q < 9
    
    For i = 0 To 7
        n(i) = Colecao.Item(i + 1)
        Cells(i + 1, 1).Value = n(i)
    Next
    
    Exit Sub
ERRO:
    q = q - 1
    Resume Next
End Sub
Abraço


ygordaniela
Colaborador
Colaborador
Mensagens: 16
Registrado em: Qua Abr 25, 2018 7:49 pm

Re: Gerar números decimais aleatórios sem repetição

Mensagem por ygordaniela »

Muito o bridado meu amigo pela sua disposição em me ajudar seu código ficou excelente mais preciso faz uma pequena modificação para minha planilha e que os números tem qui ser gerado nas células (D41:k41) se for possível você me ajudar mais uma vez te agradeço!


JValq
Manda bem
Manda bem
Mensagens: 101
Registrado em: Qua Abr 27, 2011 7:34 pm
Localização: São Paulo/SP

Re: Gerar números decimais aleatórios sem repetição

Mensagem por JValq »

Boa noite,

Veja se, agora, atende:

Código: Selecionar todos

Sub Gerar()
    Dim Num As Double
    Dim q As Integer
    Dim Colecao As New Collection
    Dim n(7)
    Dim j As Integer
    
    On Error GoTo ERRO
    q = 1
    Do
        Num = Rnd * (102.9 - 100) + 100
        Colecao.Add CDbl(Format(Num, "#.0")), Format(Num, "#.0")
        q = q + 1
    Loop While q < 9
    
    For j = 0 To 7
        n(j) = Colecao.Item(j + 1)
        Cells(41, j + 4).Value = n(j)
    Next
    
    Exit Sub
ERRO:
    q = q - 1
    Resume Next
End Sub
Abraço


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


ygordaniela
Colaborador
Colaborador
Mensagens: 16
Registrado em: Qua Abr 25, 2018 7:49 pm

Re: [RESOLVIDO] Gerar números decimais aleatórios sem repetição

Mensagem por ygordaniela »

Muito obrigado meu amigo seu Código ficou excelente, Obriga por disponibilizar seu tempo para me ajudar


ygordaniela
Colaborador
Colaborador
Mensagens: 16
Registrado em: Qua Abr 25, 2018 7:49 pm

Re: Gerar números decimais aleatórios sem repetição

Mensagem por ygordaniela »

Bom estou mais uma vez precisando de ajuda neste código estou usando o código disponibilizado gentilmente pelo JValq so que quando eu faço um copia da planilha limpa e uso a rotina ela sempre gerando o mesmo conjunto de números, gostaria de quando eu fizer uma copia da planilha limpa ela gere conjuntos de números diferentes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder