Notifications
Clear all

Tabela tenis de mesa

14 Posts
2 Usuários
0 Reactions
4,847 Visualizações
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Olá pessoal,

Disputo o campeonato de tenis de mesa aqui do Espirito Santo, criei uma planilha para o lançamento dos resultados das copas que são mensais, o problema é que ela ainda está manual, dando muito trabalho para a atualização. Gostaria da ajuda dos amigos para automatiza-la,ou seja, a cada etapa disputada, não seja necessário lançar manualmente os resultados na aba da classificação geral. A pontuação de cada etapa não muda, o que muda é a ordem dos classificados, assim sendo sempre ao final de cada torneio, temos que digitar manualmente o nome dos atletas e somar o valor de cada um para lançar nesta aba de classificação geral. Como disse, gostaria de que somente fosse lançado a ordem dos classificados nas etapas e automaticamente o nome e os pontos fossem lançados na aba classificação geral. Lembrando que são tres séries, o Rating A, Rating B e Rating C e todos três somam juntos na classificação geral. Estou enviando em anexo esta tabela, estou a disposição para maiores esclarecimentos.

Agradeço a todos

cgmkal

 
Postado : 19/04/2014 3:54 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

cgmkal,

Boa Noite!

Vamos ver se entendi: Você quer que após lançar os resultados de uma copa, os mesmos sejam lançados automaticamente na Classificação Geral. É isso? Se assim for, pergunto: A pontuação na classificação geral será sempre a mesma? Ou seja: no seu arquivo, aba 1ª copa, o primeiro lugar do Rating A tem 300 pontos, do Rating B tem 200 pontos e do Rating C tem 100 pontos. Na classificação Geral o primeiro colocado tem 300 pontos e p último tem 20 pontos. Aí é onde eu pergunto se essa classificação (ordem do primeiro ao centésimo primeiro e pontuação de 300 a 20) será sempre a mesma. Ou seja, o que muda, na verdade, são os nomes dos jogadores dentro da classificação que podem atingir mais ou menos pontos (dentro da faixa de 300 a 20). É isso? Meu raciocínio está correto? Se for isso, então a "automação" que você quer se resume a colocar na classificação geral os nomes dos jogadores que foram atingindo os pontos de acordo com a ordem. Correto?

 
Postado : 19/04/2014 6:27 pm
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Bom dia,

Exato Vagner, vai vir a segunda copa, a pontuação deles nesta copa permanece a mesma, só vai mudar na classificação geral, que vai somar a pontuação da primeira copa com a segunda conforme a classificação de cada atleta. A ideia é lançar a colocação somente na aba das copas e na aba da classificação geral entrar automaticamente o nome e somando os pontos. Como está hoje, temos que digitar manualmente também na classificação geral os nomes e somar na calculadora os pontos e lançar.

Atenciosamente

cgmkal

 
Postado : 22/04/2014 5:27 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

cgmkal,

Boa Noite!

Acho que agora ficou mais claro para mim. Todavia, gostaria de insistir ainda num ponto que é fundamental para desenvolver um código VBA que atenda a sua necessidade: As pontuações serão sempre as mesmas? Que quero dizer com isso: vamos supor que o jogador LEANDRO (1º ligar do Rating A) que teve 300 pontos na 1ª Copa, obteve apenas 20 pontos na 2ª Copa. Com isso ele totaliza 320 pontos. Vamos supor também que o jogador ICARO MONTEIRO(20 lugar do Rating C) que obteve apenas 20 pontos na 1ª Copa, conseguiu obter 400 pontos na 2ª Copa, totalizando assim 420 pontos. Nesse caso, com 420 pontos, ICARO MONTEIRO seria o primeiro colocado na Classificação Geral. Todavia, isso é o que estou lhe perguntando: É possível um jogador tirar mais do que os 300 pontos? É possível um jogador ter menos de 20 pontos? Ou essa faixa de pontuação (20 a 300) será única em todas as copas?

 
Postado : 22/04/2014 6:15 pm
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Oi Wagner,

Tudo bem?

Sim, a pontuação será sempre a mesma, não muda, conforme a tabela de pontuação que está na planilha, mas com um detalhe. Como você citou o atleta Leandro, ele está no Rating A, sendo assim ele só poderia somar mais 300 pontos, que é o primeiro lugar, ou 220 pontos, que é o último lugar, assim como o Ícaro, que disputa o Rating C, só poderia somar 100 pontos se for o primeiro e 20 pontos se for o último. Como você viu, são três Ratings, A, B e C, sendo que os atletas disputam entre si dentro do seu próprio Rating. A cada etapa caem os últimos quatro atletas para o Rating anterior e sobem os quatro primeiros atletas para o Rating posterior. Na aba "classificação geral" entram todos eles conforme a sua pontuação em seu respectivo Rating. Qualquer dúvida estou por aqui.

Obrigado

cgmkal

 
Postado : 22/04/2014 7:36 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

cgmkal,

Bom Dia!

Bem... depois de muitas idas e vindas de informações, creio que consegui desenvolver algo como você quer: efetuar a classificação geral automática na aba Classificação Geral, após a inserção dos resultados de cada Copa de tênis.

No arquivo anexo, para fins de teste, veja que preenchi, na 2ª Copa, dados aleatórios (como se a competição já tivesse terminado e os dados lançados) para todos os jogadores (inclusive do feminino). Detalhe: na macro que desenvolvi fiz apenas até as jogadas alusivas ao torneio feminino (Rating A, B, C e Feminino). Não fiz para outros torneios como Pré-Mirim, Mirim, Infantil, Juvenil, etc. Se for para fazer para esses também, você pode facilmente adaptar o código para os demais...

O que é necessário saber para que o código funcione corretamente:
1 - Independentemente da ordem, TODOS os atletas precisam ser registrado previamente na aba Classificação Geral Rating, mesmo sem qualquer pontuação. Isso porque o código vai examinar lá se o atleta existe para poder comparar com a tabela do torneio que acabou de ser lançado e classificar corretamente.
2 - Quando você for para uma 3ª Copa, por exemplo, basta você copiar toda a aba para o final (antes da Classificação Geral) e renomeá-la para 3ª Copa (por exemplo). Depois disso, você deverá apagar todas as pontuações dos atletas ali inseridos (pois se referem ao torneio anterior) e inserir os novos resultados. Esse procedimento (copiar toda a aba) fará com que o botão CLASSIFICAR criado no cabeçalho da aba e todas as demais disposições e formatações da aba sejam copiados na íntegra para a nova aba.
3 - A quantidade de Copas (torneios) não é importante. Você pode abrir quantas abas forem necessárias. O único cuidado que deve ser observado é que a disposição dos dados, nas linhas e colunas das diversas tabelas, não pode ser alterada.
4 - A quantidade de linhas em cada Rating também não é importante. O Código sempre pegará a última linha com dados de cada Rating (ou Feminino).
5 - O código vai ler os nomes dos atletas da aba ativa (aquela onde foi clicado o botão CLASSIFICAR), comparar com os nomes registrados na aba Classificação Geral e, se forem iguais, soma o valor da pontuação que existe na aba Classificação Geral com o valor da nova pontuação obtida na aba ativa e registra esse novo valor da aba Classificação Geral. Depois de tudo, ele faz um ordenamento decrescente dos nomes e valores pelo valor da pontuação, da maior para a menor.
6 - Para testar a execução do código, basta você apagar o valor da pontuação, na aba Classificação Geral, de todos os atletas, ir para a aba 1ª Copa e clicar no botão CLASSIFICAR lá existente. Após a exibição da mensagem de sucesso, você pode ir a aba Classificação Geral e observar que lá já estão registrados e devidamente ordenados, os atletas com suas respectivas pontuações (a mesma da aba 1ª Copa). Depois você pode ir a aba 2ª Copa e clicar no botão CLASSIFICAR. Após a exibição da mensagem de sucesso, vá novamente a aba Classificação Geral e observe que agora estão registradas a soma da pontuação obtida nas duas copas.

 
Postado : 24/04/2014 7:59 am
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Olá wagner,

Tudo bem?

Rapaz, melhorou muito, maravilha mesmo. No inicio não dava certo, alguns nomes não apareciam ou apareciam no lugar errado, mas como você disse que todos os nomes tem de estar na classificação geral, percebi que eles haviam sido digitado incorretamente na primeira e na segunda etapa que já houve. Quanto ao Ranking Pré-Mirim, Mirim, Infantil, Juvenil, etc... você disse que é só adaptar o código para eles, confesso que não entendi. Gostaria de entender o funcionamento, assim não precisaria perturbar mais vocês, rsrsrs. Outra coisa, a classificação geral do Ranking Pré-Mirim, Mirim, Infantil, Juvenil, etc... deve estar na mesma aba da classificação geral Rating ou devo abrir outra aba para ela?

Grato

cgmkal

 
Postado : 24/04/2014 4:42 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Vamos lá:
Respondendo primeiro a sua pergunta quanto aos outros grupos de atletas: Você deve colocá-los todos na aba Classificação Geral, respeitando a mesma disponibilidade dos dados dos outros grupos que já estão lá. Ou seja, continue a inserir tabelas adicionais, umas ao lado das outras, para cada grupo de atleta, assim como já fez, por exemplo, na aba 2ª Copa.

Analisando o código que soma as notas do torneio Feminino. Observe as linhas de comentário (precedidas por um apóstrofo) que inseri no código:

    'Feminino
    'Aqui nós vamos descobrir qual é a última linha com dados, pela coluna onde estão os nomes dos atletas. Primeiro inicia-se ela com a primeira linha com dados.
    UltimaLinhaAtiva = 8
    
    'Aqui inicia-se um laço para percorrer todas as linhas, pela coluna N onde estão os nomes das atletas (no caso do torneio Feminino. Se fosse fazer agora do Ranking  Pré-Mirim, teria que substituir a letra N pela letra T que é a coluna onde estão os nomes desses atletas). Enquanto não achar uma linha em branco, o laço vai percorrer todas as linhas da coluna dos nomes.
    Do While ActiveSheet.Range("N" & UltimaLinhaAtiva).Value <> ""
        'Pega-se a variável que começou com o número 8 (primeira linha com dados) e vai incrementando a cada nova linha com dados encontrada
        UltimaLinhaAtiva = UltimaLinhaAtiva + 1
    'Aqui é o comando que faz o código continuar voltando para a instrução DO WHILE até que a condição (ActiveSheet.Range("N" & UltimaLinhaAtiva).Value <> "") seja verdadeira (ou seja, enquanto as linhas da coluna N, nesse caso, da planilha ativa, for diferente de branco, vazio)
    Loop
     'Como a contagem conta inclusive a primeira linha em branco encontrada, é preciso retirar uma linha para saber qual é a última com dados da coluna dos nomes
    UltimaLinhaAtiva = UltimaLinhaAtiva - 1
    
    'Aqui vamos achar a última linha com dados, na aba Classificação Geral, alusiva a coluna F que é onde estão os nomes das Atletas. No caso do Pré-Mirim, substituiríamos esse F pelo J (lugar onde ficariam os nomes dos Atletas Pré-Mirins, na aba Classificação Geral). O nome da variável não precisa nem ser modificado. Isso não é importante, já que o grupo de atletas Pré-Mirins é executado após o grupo das atletas Femininas.
    
    'Primeiro, inicia-se a variável com a primeira linha com dados. Observar que no caso da aba Classificação Geral, essa primeira linha é sempre 6
    UltimaLinhaGeralFEM = 6

      'Aqui inicia-se um laço para percorrer todas as linhas, pela coluna F onde estão os nomes das atletas (no caso do torneio Feminino. Se fosse fazer agora do Ranking  Pré-Mirim, teria que substituir a letra F pela letra J que é a coluna onde estão os nomes desses atletas). Enquanto não achar uma linha em branco, o laço vai percorrer todas as linhas da coluna dos nomes.
    Do While Sheets("Classificação Geral Rating").Range("F" & UltimaLinhaGeralFEM).Value <> ""
        'Pega-se a variável que começou com o número 6 (primeira linha com dados) e vai incrementando a cada nova linha com dados encontrada
        UltimaLinhaGeralFEM = UltimaLinhaGeralFEM + 1
      'Aqui é o comando que faz o código continuar voltando para a instrução DO WHILE até que a condição (Sheets("Classificação Geral Rating").Range("F" & UltimaLinhaGeralFEM).Value <> "") seja verdadeira (ou seja, enquanto as linhas da coluna F, nesse caso, da planilha Classificação Geral, for diferente de branco, vazio)
    Loop
    'Como a contagem conta inclusive a primeira linha em branco encontrada, é preciso retirar uma linha para saber qual é a última com dados da coluna dos nomes
    UltimaLinhaGeralFEM = UltimaLinhaGeralFEM - 1
    
    'Aqui inicia o laço que vai ler cada uma das linhas da aba ativa ( a que foi clicado o botão)
    For i = 8 To UltimaLinhaAtiva
         'Aqui inicia o laço que vai ler cada uma das linhas da aba Classificação Geral
        For j = 6 To UltimaLinhaGeralFEM
            'Aqui verifica-se se o nome da atleta encontrado na aba ativa É IGUAL ao nome encontrado na aba Classificação Geral. Se fosse o caso do Pré Mirim, teríamos que substituir o ActiveSheet.Range("N" & i).Value por ActiveSheet.Range("T" & i).Value e o Sheets("Classificação Geral Rating").Range("F" & j).Value por Sheets("Classificação Geral Rating").Range("J" & j).Value
            If ActiveSheet.Range("N" & i).Value = Sheets("Classificação Geral Rating").Range("F" & j).Value Then
                 'Se os nomes forem iguais, soma o valor que existe na coluna pontuação da aba Classificação Geral com o valor da pontuação que existe na aba ativa. No caso do Pré-Mirim teríamos que substituir os dois comandos Sheets("Classificação Geral Rating").Range("G" & j).Value por Sheets("Classificação Geral Rating").Range("K" & j).Value  e o comando ActiveSheet.Range("O" & i).Value pelo ActiveSheet.Range("U" & i).Value
                Sheets("Classificação Geral Rating").Range("G" & j).Value = ActiveSheet.Range("O" & i).Value + Sheets("Classificação Geral Rating").Range("G" & j).Value
                 'Uma vez achada a coincidência de nomes, não há porque continuar dentro do laço. Aqui força-se a saída do laço interno para continuar procurando as coincidências de nomes de outros atletas.
                Exit For
             'Aqui encerra-se o bloco de decisões
            End If
        'Aqui é o comando que faz o código continuar na linha FOR (laço interno) até que a variável j chegue ao valor contido na variável UltimaLinhaGeralFEM
        Next
        'Aqui é o comando que faz o código continuar na linha FOR (laço externo) até que a variável i chegue ao valor contido na variável UltimaLinhaAtiva
    Next
 
Postado : 24/04/2014 6:03 pm
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Boa dia Wagner,

Caraca, é bem complicado hein! Tenho que entender esta programação ai para inserir as outras categorias, ou não?

Grato

cgmkal

 
Postado : 25/04/2014 10:29 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Sim.

Não fiz logo tudo porque primeiro não havia dados nas demais tabelas. Assim imaginei que nem houvesse torneio para as outras categorias e que fosse apenas uma intenção futura. Segundo, também por uma questão de tempo.

Mas se não conseguir e me sobrar um tempinho, vou fazer o restante do código e depois te envio tudo. Lembrando que os atletas de todos esses grupos deverão ser registrados, primeiramente, na aba Classificação Geral.

 
Postado : 25/04/2014 11:54 am
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Oi Wagner,

Me desulpe, existem sim as outras categorias, pensei em não colocar a principio para não dar mais trabalho e por pensar que pelo modelo eu pudesse faze-las, mas agora vejo que não é fácil assim. Você já nos ajudou de verdade, mas se puder fazer também para as demais, a comunidade de mesatenistas aqui do estado vai te agradecer muito, se tiver um tempo ai claro! Se for possível já até adicionei, mas como o arquivo está grande postei neste link abaixo.

Grande abraço

cgmkal

http://www.4shared.com/file/OnvruxZTba/ ... _2014.html?

 
Postado : 25/04/2014 4:37 pm
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Boa noite Wagner,

Estranho, postei uma mensagem, mas ela não está aparecendo, por isso a estou postando novamente. Na mensagem eu disse que não havia colocado as outras categorias por não querer dar muito trabalho e por achar que poderia fazer as demais verificando o modelo seu, mas a coisa não é tão fácil assim. Sei que já teve muito trabalho, mas se tiver um tempo e conseguir fazer estas outras categorias, a comunidade de mesatenistas aqui do Espírito Santo te agradeceria de coração. Como a planilha ficou grande, porque adicionei as outras categorias, a postei em um site com endereço no link abaixo.

http://www.divshare.com/download/25466342-54d

Grande abraço

cgmkal

 
Postado : 25/04/2014 7:01 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

cgmkal,

Boa Tarde!

Bem... terminei seu arquivo e fiz diversos testes. Acredito que o mesmo esteja funcionando 100% OK. Como havia muita repetição de código, fiz uma melhoria no mesmo de maneira a simplificar mais. Isso possibilitou maior eficácia e performance na hora de rodar o código. Também tive que fazer algumas alterações no layout da aba Classif Geral Rating e Ranking em razão de adequá-la a mesma aos mesmos parâmetros de início de linhas em todas as tabelas.

Se você não entende de programação e nem de código VBA, aconselho a não modificar nada (principalmente com relação a disposição dos dados nas linhas e colunas) nessas planilhas. Caso contrário elas vão parar de funcionar e apresentar erros diversos. Veja bem: em programação, os detalhes são importantíssimos! Desse modo, o código faz diversas referências a número de linhas, números de colunas, onde essas linhas começam e terminam, onde essas colunas começam e terminam, referência ao nome das abas e por aí vai... Por exemplo, no primeiro arquivo que lhe enviei (já com o código pronto) sua aba de classificação chamava-se "Classificação Geral Rating". Quando você disponibilizou esse novo arquivo, nada mais funcionava no código pois você alterou o nome da aba para Classif Geral Rating e Ranking.

Como disse, fiz diversos testes e acredito que a lógica da programação esteja satisfazendo o objetivo final: Pegar as pontuações dos atletas em cada torneio, somá-las, registrá-las e classificar os atletas de acordo com sua respectiva pontuação e dentro do seu respectivo Rating ou Ranking. Entretanto, é bom registrar aqui que quando da realização desses teste, encontrei diversos erros que não eram erros de programação mas sim, erros de elaboração dos próprios dados das suas planilhas. Erros como sobrenome do atleta registrado de duas formas diferentes (no torneio AMORIN e na Classificação Geral AMORIM), atletas com sobrenome em um lugar e em outro sem o sobrenome, atletas faltando uma letra em um dos registros, atletas registrado em uma planilha de uma forma e na Classificação Geral de outra (como MELISSA DELAPRANE com dois espaços entre os dois nome e MELISSA DELAPRANE com apenas um espaço entre os dois nomes) e por aí vai.

Desse modo, aconselho a fazer uma grande revisão dos nomes de todos os atletas em todas as abas. Eles precisam ser EXATAMENTE IGUAIS em todas as abas além de que todos precisam estar previamente cadastrados na aba de Classificação Geral. Lembre-se, quando o processador do Micro compara nomes (strings ou cadeia de caracteres) ele encontra diversas diferenças. Para ele, A é diferente de a, Amor é diferente de AMOR, diferente de amor, diferente de aMor, diferente de Amo e por aí vai...

 
Postado : 26/04/2014 10:27 am
(@cgmkal)
Posts: 8
Active Member
Topic starter
 

Boa noite Wagner,

Me desculpe, estive fora de casa e não tinha acesso a internet onde estava. Gostaria de agradecer em nome dos mesatenistas capixaba o apoio dado por voce na construção da planilha. Estamos fazendo testes, mas vai ser muito útil para nós. Agradecemos de coração.

Grande abraço

cgmkal

 
Postado : 13/05/2014 3:42 pm