Sorteio com critéri...
 
Notifications
Clear all

[Resolvido] Sorteio com critério


andregomesmac
Posts: 11
Registered
Topic starter
(@andregomesmac)
Active Member
Entrou: 4 meses atrás

Tenho uma planilha com 700 números, nomes e status da rifa, preciso sortear com critério de status pago. Sortear somente se o status for "PAGO"

__________________________________________
Editado pela moderação. Motivo: Não poste o texto todo em caixa alta pois na internet é considerado como estar gritando.
Responder
10 Respostas
1 Responder
topscore
Registered
(@topscore)
Entrou: 6 anos atrás

Eminent Member
Posts: 40

@andregomesmac

Dei uma olhada bem rápida no seu arquivo. Sugiro o seguinte:

Faça uma coluna, que ficará oculta ao usuário, somente com os nomes de quem pagou. Aplique seu código para sortear nessa coluna.

Se não quiser deixar uma coluna oculta, faça seu código criar essa coluna, sortear, e apagar depois.

Responder
muca
Posts: 36
 muca
Registered
(@muca)
Eminent Member
Entrou: 4 anos atrás

Veja se resolve

 

Sub sorteio()
Dim celula As String
Dim resultado As Integer
    Pagos
    LINHA = 1
    celula = "E" + CStr(LINHA)
    i = Plan1.Range(celula).Value
    
        While i <> ""
        LINHA = LINHA + 1
        celula = "E" + CStr(LINHA)
        i = Plan1.Range(celula).Value
        Wend
        
        LINHA = LINHA - 1
        celula = "E" + CStr(LINHA)
        i = Plan1.Range(celula).Value
       
            Randomize:
            resultado = ((i - 1) * Rnd + 1)
            
        MsgBox "O Numero Sorteado é: " + CStr(resultado), vbInformation, "Resultado"

End Sub

Sub Pagos()
    Dim iLin As String, lin As String, i As Integer, Ul As String
    Plan1.Range("E2:E" & Plan1.Cells(Rows.Count, "A").End(xlUp).Row) = ""
    iLin = Plan1.Cells(Rows.Count, "A").End(xlUp).Row
    lin = 2
    Ul = 2
    For i = 2 To iLin
        If Plan1.Cells(i, 3) = "PAGO" Then
            Plan1.Cells(Ul, 5) = Plan1.Cells(i, 1)
            lin = lin + 1
            Ul = Ul + 1
        End If
            Plan1.Select
    Next i
End Sub
Responder
1 Responder
andregomesmac
Registered
(@andregomesmac)
Entrou: 4 meses atrás

Active Member
Posts: 11

@muca é quase uma solução, más precisa amadurecer! o ideal seria uma maneira de colocar uma condição antes do sorteio.

por exemplo, rnd "intervalo" contido em "matriz" se "pago".

algo parecido com isso, não sei se tem uma lógica capaz

tipo um rnd com if

Responder
muca
Posts: 36
 muca
Registered
(@muca)
Eminent Member
Entrou: 4 anos atrás

Com InputBox, para escolher PAGO ou NÃO PAGO, e selecionando o número sorteado.

 

Sub sorteio()
Dim celula As String
Dim resultado As Integer
    Escolha
    LINHA = 1
    celula = "E" + CStr(LINHA)
    i = Plan1.Range(celula).Value
    
        While i <> ""
        LINHA = LINHA + 1
        celula = "E" + CStr(LINHA)
        i = Plan1.Range(celula).Value
        Wend
        
        LINHA = LINHA - 1
        celula = "E" + CStr(LINHA)
        i = Plan1.Range(celula).Value
       
            Randomize:
            resultado = ((i - 1) * Rnd + 1)
        
        Range("A" & CStr(resultado) + 1).Select
        MsgBox "O Numero Sorteado é: " + CStr(resultado), vbInformation, "Resultado"
End Sub

Sub Escolha()
Dim iLin As String, lin As String, i As Integer, Ul As String, varTexto As String
    
    Plan1.Range("E2:E" & Plan1.Cells(Rows.Count, "A").End(xlUp).Row) = ""
    iLin = Plan1.Cells(Rows.Count, "A").End(xlUp).Row
    varTexto = InputBox("Insira um texto", "Informe a Condição (PAGO ou NÃO PAGO")
    Plan1.Range("E1") = varTexto
    lin = 2
    Ul = 2
    
    For i = 2 To iLin
        If Plan1.Cells(i, 3) = varTexto Then
            Plan1.Cells(Ul, 5) = Plan1.Cells(i, 1)
            lin = lin + 1
            Ul = Ul + 1
        End If
            Plan1.Select
    Next i
End Sub
Responder
6 Respostas
andregomesmac
Registered
(@andregomesmac)
Entrou: 4 meses atrás

Active Member
Posts: 11

@muca não consegui colocar em pratica, teria como colocar na planilha e repostar?

 

Responder
muca
 muca
Registered
(@muca)
Entrou: 4 anos atrás

Eminent Member
Posts: 36

@andregomesmac

 

Responder
andregomesmac
Registered
(@andregomesmac)
Entrou: 4 meses atrás

Active Member
Posts: 11

@muca infelizmente não funcionou. na primeira tentativa  sorteou um não pago.

Responder
JSCOPA10
Moderator
(@jscopa10)
Entrou: 2 anos atrás

Reputable Member
Posts: 284

@andregomesmac, veja a gambiarra na Plan2 ... é só apertar DEL em qualquer célula vazia e o sorteio acontece!!!!!!!!!!!!!

PS: você pode combinar com o pessoal ... vou apertar DEL 10x quem aparecer em F2 é o sorteado!!!!!!!!!!!!!

 

Responder
muca
 muca
Registered
(@muca)
Entrou: 4 anos atrás

Eminent Member
Posts: 36

@andregomesmac

Veja se o anexo resolve...

 

Responder
andregomesmac
Registered
(@andregomesmac)
Entrou: 4 meses atrás

Active Member
Posts: 11

@muca funcionou, obrigado.
tenho um outro arquivo com uma dificuldade bem parecida!

se puder me passa um endereço de email que te envio para ver se pode me ajudar!

 

Responder