Se você deseja gerar uma lista de números aleatórios exclusivos, você pode usar as funções RANDBETWEEN e VBA RND. Neste artigo, geraremos 3 números exclusivos da lista fornecida.
Você pode encontrar a pergunta original aqui
Pergunta: Quero uma macro para gerar uma lista de 3 números aleatórios de uma lista de números salvos na coluna A. Há uma condição de que o código VBA precisa ser cuidado. A condição é que existam 3 números na coluna B, portanto, a macro precisa criar uma lista de números que não ocorreram uma vez na coluna B. Dessa forma, podemos ter uma lista de números únicos na coluna B e C.
A seguir está o instantâneo do exemplo que temos:
Para obter a lista de números aleatórios exclusivos; precisamos seguir os passos abaixo para lançar o editor VB
- Clique na guia Desenvolvedor
- No grupo Código, selecione Visual Basic
- Copie o código abaixo no módulo padrão
Sub RandomNumbers () Dim ws As Worksheet Dim ar As Variant Dim RandomNum As Long Dim i As Integer Dim myVal As Long Randomize Set ws = ThisWorkbook.Sheets ("Numbers") Com ws ar = .Range ("A" & Rows.Count ) .End (xlUp) .Row .Range ("C1: C3"). ClearContents For i = 1 To 3 Faça RandomNum = Int ((1 - ar + 1) * Rnd + ar) myVal = .Range ("A" & RandomNum) .Value Loop Até Range ("B1: C24"). Find (what: = myVal, lookat: = xlWhole) Is Nothing .Range ("C" & i) .Value = myVal Next i End With End Sub
- Para executar a macro, podemos pressionar a tecla F5 no teclado se você estiver ativo na tela do Editor do Visual Basic
- Outra forma de executar a macro é usando a tecla “ALT + F8”; selecione a macro e clique no botão Executar
- Conforme executamos o código VBA, a lista única de números será gerada automaticamente
Explicação do código:
No código acima, usaremos a função RND & INT junto com o loop For e o loop Do para obter o resultado.
- Declaramos Dim ws como planilha; o objetivo de declarar ws como planilha é que queremos apenas que o código seja executado em uma planilha específica, ou seja, números em nosso exemplo
- Dim RandomNum As Long: isso salvará os números únicos
- Set ws = ThisWorkbook.Sheets ("Numbers"): esta linha garantirá que o código seja executado apenas na planilha do Numbers
- A próxima linha de código usará a instrução With
- ar = .Range ("A" & Rows.Count) .End (xlUp) .Row: esta linha salvará a última célula na coluna A (24 em nosso exemplo)
- .Range ("C1: C3"). ClearContents: esta linha apagará qualquer conteúdo existente no intervalo C1: C3
- Em seguida, executaremos o loop For começando de 1 a 3 vezes com Do Loop para gerar uma lista de números aleatórios e verificar se não há duplicatas no intervalo existente, ou seja, coluna B
Conclusão: Podemos gerar uma lista de números aleatórios distintos de uma lista no Microsoft Excel com pequenos ajustes no código VBA acima.
Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail