Página 1 de 1

Macro para sorteio de números não repetidos

Enviado: 25 Ago 2020 às 12:26
por ricardosilvercup
Boa tarde pessoal,

Estou a tentar fazer uma macro para fazer um sorteio sem números repetidos num intervalo, pesquisei e encontrei uma mas não estou conseguindo meter a funcionar, podem me ajudar malta :D
Em anexo fica a minha panilha com a macro que encontrei na net :D
Obrigado ;)

Re: Macro para sorteio de números não repetidos

Enviado: 25 Ago 2020 às 16:26
por osvaldomp
Experimente:
Código: Selecionar todos
Sub GeraNúmeros()
 Dim i As Integer
  Application.ScreenUpdating = False
  Range(Cells(6, 3), Cells(6, 3).End(2)) = ""
  Randomize
  For i = 1 To [C4]
   Cells(6, i + 2) = Int(([E2] * Rnd) + [C2])
    Do Until Application.CountIf _
     (Range(Cells(6, 3), Cells(6, i + 2)), Cells(6, i + 2)) = 1
     Cells(6, i + 2) = Int(([E2] * Rnd) + [C2])
    Loop
  Next i
  Cells(6, 3).Resize(, [C4]).Sort Key1:=Cells(6, 3), Order1:=xlAscending, Orientation:=xlLeftToRight
End Sub
obs. o resultado será inserido em linha, a partir de C6; antes de testar desfaça a mesclagem em C6:E11

Macro para sorteio de números não repetidos

Enviado: 26 Ago 2020 às 05:08
por ricardosilvercup
Bom dia pessoal,

Agora a macro funciona ;) , mas repete números eu pretendia que não repetisse números.
É possível fazer alguma alteração na macro para não repetir números :D

Obrigado Osvaldo ;)

Re: Macro para sorteio de números não repetidos

Enviado: 26 Ago 2020 às 08:50
por osvaldomp
ricardosilvercup escreveu:... mas repete números ...
A qual macro você está se referindo?

O código que passei gera uma série de números sem repetição.

Macro para sorteio de números não repetidos

Enviado: 26 Ago 2020 às 09:43
por ricardosilvercup
Pretendia por exemplo, sortear de 1 a 10 um numero de cada vez sem repetir.
Desculpa, não sei se me expliquei bem

Re: Macro para sorteio de números não repetidos

Enviado: 26 Ago 2020 às 10:25
por osvaldomp
Utilize o código abaixo.
Código: Selecionar todos
Sub GeraNúmerosV2()
  If Application.CountA(Range("6:6")) >= [E2] - [C2] + 1 Then Exit Sub
  Randomize
   Cells(6, Columns.Count).End(1)(1, 2) = Int(([E2] * Rnd) + [C2])
    Do Until Application.CountIf _
     (Range(Cells(6, 1), Cells(6, Columns.Count).End(1)), Cells(6, Columns.Count).End(1)) = 1
     Cells(6, Columns.Count).End(1) = Int(([E2] * Rnd) + [C2])
    Loop
End Sub
obs.
1. preencha C2 e E2 conforme desejado
2. se você quer sortear um número de cada vez então não faz sentido a existência do campo "quantidade de numeros a sortear" que você colocou na sua planilha
3. o resultado será colocado em linha a partir de B6; antes de testar desfaça a mesclagem em C6:E11

Macro para sorteio de números não repetidos

Enviado: 26 Ago 2020 às 10:31
por ricardosilvercup
Boas Osvaldo,

É isso mesmo, muito obrigado ;)