Ir ao conteúdo

Excel Usando lista suspensa com o comando CONT.SE


Ir à solução Resolvido por Visitante,

Posts recomendados

Postado

Olá, boa tarde!

 

Estou apanhando bastante aqui para resolver um problema.

Tenho que fazer uma planilha onde um mesmo nome não pode aparecer mais do que 4 vezes, usando CONT.SE, fácil, resolvido. Mas nem tanto.

Acontece que a planilha será usada par dezenas de pessoas, então se a pessoa digitar Adriano, e a outra por engano Adrano, e outra por descuido Adraiano o CONT.SE perde sua funcionalidade. Então pensei em limitar essa possibilidade usando validação de dados e lista suspensa, ai que fiquei empacado, pois não sei como aplicar.

É possível fazer isso? Aplicar lista suspensa em uma coluna e ao se escolher o mesmo nome a quinta vez ser impedido.

 

Obrigado!

Postado

Isso, se fosse só uma vez seria mais simples. Se desse para definir também que a célula só aceita certos nomes e aplicar a validação em seguida, também funcionaria, só que também não deu.

  • Solução
Postado

Segue uma alternativa se for aceitável uma solução via macro.

Aplique a Validação com a lista de nomes, e o código abaixo, instalado no módulo da planilha de interesse, irá controlar o máximo de 4 nomes iguais na coluna.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 4 Or Target.Value = "" Then Exit Sub
 If Application.CountIf([D:D], Target.Value) > 4 Then
  MsgBox "MÁXIMO DE 4 VALORES IGUAIS NA COLUNA"
  Target.Value = ""
 End If
End Sub

obs. considerei que a coluna a ser controlada é a D; se for a B, por exemplo, altere no código

de <> 4 ~~~> para <> 2 e

de [D:D] ~~~> para [B:B]

Postado
Em 23/05/2019 às 09:16, osvaldomp disse:

Segue uma alternativa se for aceitável uma solução via macro.

Aplique a Validação com a lista de nomes, e o código abaixo, instalado no módulo da planilha de interesse, irá controlar o máximo de 4 nomes iguais na coluna.


Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 4 Or Target.Value = "" Then Exit Sub
 If Application.CountIf([D:D], Target.Value) > 4 Then
  MsgBox "MÁXIMO DE 4 VALORES IGUAIS NA COLUNA"
  Target.Value = ""
 End If
End Sub

obs. considerei que a coluna a ser controlada é a D; se for a B, por exemplo, altere no código

de <> 4 ~~~> para <> 2 e

de [D:D] ~~~> para [B:B]

Eu pensei em usar macro, mas o problema é que não sei utilizar...

Esse código que você postou, por exemplo, eu habilitei a guia desenvolvedor, mudei as configurações de macro para habilitar todas as macros e setei para confiar no acesso ao modelo.

 

Dai, abri o visual basic, inseri um módulo e colei o código, dei o play, defini um nome e ai voltei para a planilha onde já tinha criado a lista suspensa anteriormente.

 

Só que nada aconteceu. Acredito que não é só fazer esses passos que citei acima. Se tiver uma forma de explicar como adicionar módulo e inserir o código, eu agradeço.

 

Estou aprendendo vba, mas ainda estou no básico.


De qualquer forma, obrigado pela sua ajuda!

  • Membro VIP
Postado

Bom dia @Buscador1985

 

Tentando ajudar.

 

Conforme o Osvaldo instruiu o código tem que ser colocado no módulo da planilha e não em um modulo comum.

Veja como proceder:

Clique com o lado direito do mouse no nome da planilha --> (abinha que fica embaixo) --> selecione a opção: Exibir Código --> Cole o código do Osvaldo lá --> ALT+Q para retornar a planilha --> Pronto, agora é só testar que a macro vai funcionar automaticamente.

 

[]s

  • Curtir 1
Postado

Olá @Patropi!

 

Agora funcionou perfeitamente, uma coisa simples, mas que eu nunca ia imaginar. Sempre pensei que abrir o vba e exibir o código eram a mesma coisa.

 

Já fucei um pouco e alterei, pois eu conseguiria me virar com somente uma coluna, mas com duas seria melhor, dai ficou assim:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Count > 1 Then Exit Sub
 If Target.Column <> 4 And Target.Column <> 5 Or Target.Value = "" Then Exit Sub
 If Application.CountIf([D:E], Target.Value) > 4 Then
  MsgBox "Esta pessoa já atingiu o número máximo de participações." + vbCrLf + "Selecione outro por favor. " + vbCrLf + "Obrigado!"
  Target.Value = ""
 End If
End Sub

 

Muito obrigado mesmo @Patropi e @osvaldomp!

Sinceros cumprimentos!

  • Curtir 1
Postado
1 hora atrás, Buscador1985 disse:

Já fucei um pouco e alterei, pois eu conseguiria me virar com somente uma coluna, mas com duas seria melhor, dai ficou assim:

 

Este comando que você colocou If Application.CountIf([D:E], Target.Value) > 4 Then irá contar quantas vezes o conteúdo existe considerando as colunas D e E conjuntamente. Exemplo: se na coluna D houver 4 células com Adriano e o usuário tentar inserir Adriano na coluna E o código não irá aceitar. Se é assim que você quer, então ok.

De outra forma, se você quiser considerar o máximo de 4 conteúdos iguais em cada coluna, aí será preciso alterar aquele comando.

Postado

Sim, tudo certo. O uso é para se limitar a participação das pessoas em determinados eventos. Ficou definido que para cada evento o organizador deste só pode convidar duas pessoas, mas cada convidado não pode participar de mais de 4 eventos, com isso eu impeço que se estourar o limite da coluna D, o organizar tente colocar na E.

 

Então o objetivo é que se independente da pessoa ser selecionada como participante 1 ou participante 2 a planilha impeça a escolha pela 5 vez.

 

Obrigado!

Postado

Olá pessoal, boa tarde!

 

Já fiz algumas outras alterações no código e está tudo funcionando corretamente. Mas me ocorreu algo que tinha esquecido.

É possível deixar uma planilha online com essa macro?

Subi aqui e ela parou de funcionar.

 

Obrigado!

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!