Notifications
Clear all

RandBetween em um range com valores diferentes

6 Posts
1 Usuários
0 Reactions
1,301 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tenho 30 carros, e tenho que fazer um sorteio de 15 carros da linha a1:a15 ao clicar no botão, então usarei o
Range("a1") = WorksheetFunction.RandBetween(1, 30)

Então eu coloquei pra sortear em todas, mas eu não quero que repita os números do sorteio.

Como fazer para que os carros não sejam repetidos?

 
Postado : 11/07/2012 3:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não sei se entendi direito.. se quer sortear um de cada vez (e em qual sequência de comandos) ou todos...

Segue um exemplo para sortear os 15 de uma vez... (meio gambiarra... pode melhorar...)

 
Postado : 11/07/2012 4:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Edson, legal que você está ajudando, mas procure seguir as regras do forum, no quesito upload de arquivos:

Upload de arquivos
Ja temos mais de 1,5GB em arquivos aqui no Planilhando, e como não geramos $$$, temos que ser austeros no uso da banda e recursos, por isso, segue novas regras pra upload de arquivos:
-Tamanho máximo: 2Mb
-Formato obrigatório: .Zip - .rar - .ice

Principalmente se o arquivo for XLS, ao invés de XLSX. Já tomei a liberdade de compactar o seu.

Nossas Regras: http://www.planilhando.com.br/vie ... ?f=7&t=203

 
Postado : 11/07/2012 10:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Eu não entendi direito mas..

Se eu tenho 30 ou mais números na coluna A, então na coluna B, terei somente 15 sem repetição

Sub Mandar_15_Para_ColunaB()


    Dim counter As Long, a As Variant, r As Long
    
    With Sheets("Plan1")
    
        a = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
        
        Do
            r = Int((UBound(a) * Rnd) + 1)
            If WorksheetFunction.CountIf(.Range("B:B"), a(r, 1)) = 0 Then
                counter = counter + 1
                .Range("B" & counter + 1).Value = a(r, 1)
            End If
        Loop Until counter = 15
    End With


End Sub
 
Postado : 12/07/2012 4:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Excelente, Alexandre!

Edson, legal que você está ajudando, mas procure seguir as regras do forum, no quesito upload de arquivos:

Fernando, como Moderador do Fórum, conheço bem as regras, mas não vejo sentido em compactar um arquivo de 30k para 15k.

Se houver algo que queira expor diretamente a mim quanto a isso, favor utilizar o fórum para os Moderadores ou indicar o descumprimento das regras diretamente ao Eron que, obviamente, vai tomar as medidas pertinentes.

Não vejo sentido em 'poluir' um tópico desta maneira, portanto, não entro mais neste mérito num tópico reservado à dúvida do usuário.

 
Postado : 12/07/2012 6:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

É isso mesmo, Alexandre! Muito obrigado. Obrigado, Edson.

 
Postado : 13/07/2012 4:14 pm