Página 1 de 1

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

Enviado: Seg Jul 30, 2018 1:55 pm
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

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

Enviado: Ter Jul 31, 2018 10:28 am
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

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

Enviado: Qua Ago 01, 2018 10:47 pm
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!

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

Enviado: Qui Ago 02, 2018 1:29 am
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

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

Enviado: Qui Set 19, 2019 12:06 am
por ygordaniela
Muito obrigado meu amigo seu Código ficou excelente, Obriga por disponibilizar seu tempo para me ajudar

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

Enviado: Qui Set 19, 2019 12:51 am
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