Notifications
Clear all

[Resolvido] Botões VBA

13 Posts
2 Usuários
1 Likes
1,731 Visualizações
(@accorinte)
Posts: 9
Active Member
Topic starter
 

Olá, senhores (as)!

Alguém poderia me ajudar nesta dúvida?

É o seguinte: Estou precisando criar uma chamada para o botão Caixa de Combinação, o qual vai trazer consigo os dados:

Nome do Time; Pontuação. E em ordem decrescente, ou seja, o maior pontuador da rodada.

Exemplo: Ao selecionar a rodada 1, ele traz a Classificação da primeira rodada; ao selecionar a rodada 2, ele traz a Classificação da rodada 2; e assim por diante...

Rodada 1

Posição

Classificação

Pontos

1

Time 1

20

2

Time 4

18

3

Time 2

17

4

Time 3

10

 

 
Postado : 24/08/2020 7:33 pm
Tags do Tópico
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@EdsonBR saberia me ajudar?

 
Postado : 25/08/2020 5:19 pm
EdsonBR
(@edsonbr)
Posts: 1056
Noble Member
 

Boa noite, @accorinte

Da forma como vc fez dá pra fazer até por fórmula. Veja na edição de seu arquivo anexo.

 
Postado : 25/08/2020 9:38 pm
(@accorinte)
Posts: 9
Active Member
Topic starter
 

Boa noite, @edsonbr !!

A sua ideia resolveu meu problema!! Você acha que eficiente eu fazê-lo com fórmula do que por VBA? Porque serão 38 rodadas e centenas de times.

Obrigado!!

 
Postado : 25/08/2020 11:20 pm
EdsonBR
(@edsonbr)
Posts: 1056
Noble Member
 

"38" e "centenas" são números considerados bastante baixos para o Excel. Acredito que não haverá problemas.

Logicamente que por VBA também daria de fazer, e com poucas linhas, mas quando possível dá-se preferência por não usá-lo (marketing - ou lavagem cerebral - da Microsoft funcionando aqui na mente, para desestimular o uso do VBA que tanto amamos hehehe)

Mas se não der, retorne e faremos por VBA.

 
Postado : 26/08/2020 1:26 am
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@edsonbr , obrigado pela disposição!! 

A ideia da sua resolução resolveu mas perceba duas coisa, uma dela é: a 2ª rodada ele não classificou corretamente; também quando o time faz a mesma pontuação ele duplica o time.

Vou enviar aqui a ideia e veja (com seu conhecimentos) o que seria mais adequado para dá certo: o uso do VBA ou Fórmulas.

Se tiver dúvida do que eu fiz, por favor me pergunte que eu tentarei explicar.

 
Postado : 26/08/2020 10:45 am
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@edsonbr chegou a ver o modelo?

 
Postado : 29/08/2020 3:08 pm
EdsonBR
(@edsonbr)
Posts: 1056
Noble Member
 
Postado por: @accorinte

a 2ª rodada ele não classificou corretamente;

De fato, a fórmula considerava 2 colunas fixas, por isso o erro. Para esse seu novo arquivo, na planilha Geral1, na coluna de Pontos, teste com a fórmula:

=ÍNDICE(Tabela1;CORRESP([@Pontos];INDIRETO("Tabela1["& ÍNDICE(Dados1!$AS$1:$AS$39;$A$1) &"]");0);1)

E na coluna Classificação, teste com essa:

=ÍNDICE(Tabela1;CORRESP([@Pontos];INDIRETO("Tabela1["& ÍNDICE(Dados1!$AS$1:$AS$39;$A$1) &"]");0);1)
Postado por: @accorinte

...quando o time faz a mesma pontuação ele duplica o time.

Mas nos seus exemplos não tinha nenhum caso de empate em pontos. Então pergunto: qual o critério de desempate quando os pontos são iguais? Não ficou claro em seu exemplo.

 
Postado : 30/08/2020 12:11 am
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@edsonbr no caso do desempate eu coloquei uma coluna enumerada com várias casas decimais para que não prejudique as pontuações. Entretanto, eu penso que não é possível classificá-los sem usar esse "trambique". Quando usa o filtro de classificação ele não precisa ser somando, mas eu não quero usar o filtros.

=SOMA(Tabela2[@[Rodada 1]:[Rodada 38]])+0,0000001
=SOMA(Tabela2[@[Rodada 1]:[Rodada 38]])+0,0000002
=SOMA(Tabela2[@[Rodada 1]:[Rodada 38]])+0,0000003
=SOMA(Tabela2[@[Rodada 1]:[Rodada 38]])+0,0000004

Você teria uma solução mais melhor (simples)?

Obrigado, meu amigo!!

Este post foi modificado 4 anos atrás por accorinte
 
Postado : 31/08/2020 8:43 am
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@edsonbr

Usei as fórmulas acima mas não funcionaram. 😔 

 

=ÍNDICE(Tabela1;CORRESP([@Pontos];INDIRETO("Tabela1["& ÍNDICE(Dados1!$AS$1:$AS$39;$A$1) &"]");0);1)
=ÍNDICE(Tabela1;CORRESP([@Pontos];INDIRETO("Tabela1["& ÍNDICE(Dados1!$AS$1:$AS$39;$A$1) &"]");0);1)
 
Postado : 31/08/2020 9:19 am
(@accorinte)
Posts: 9
Active Member
Topic starter
 

Poderia editar a Planilha para mim? Não estou conseguindo fazer funcionar. 😫 

@edsonbr

 
Postado : 01/09/2020 5:24 pm
EdsonBR
(@edsonbr)
Posts: 1056
Noble Member
 

Segue anexo.

Obs.:

  • Ao invés de ComboBox, fiz com lista de validação pegando os dados da própria tabela e não mais da coluna AS com a lista de rodadas.
  • Eliminei a tabelinha de desempate e coloquei tudo na fórmula da "Geral"
  • Não entendi o porquê de existirem duas tabelas na planilha Dados1. Trabalhei somente com a Tabela1 e eliminei a Tabela2.

 
Postado : 01/09/2020 10:45 pm
(@accorinte)
Posts: 9
Active Member
Topic starter
 

@edsonbr ficou sensacional. Parabéns!! Muito Obrigado!!

 
Postado : 02/09/2020 7:55 am
EdsonBR reacted