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
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 24/04/2014 6:03 pm