Ir ao conteúdo
  • Cadastre-se
Buscador1985

Excel RESOLVIDO Usando lista suspensa com o comando CONT.SE

Posts recomendados

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite @Buscador1985

 

O problema é que o nome pode ser usado 5 vezes, se puder usar apenas uma vez é fácil retirar da lista.

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Buscador1985

 

Na minha assinatura tem um link para uma instrução de como marcar o tópico como Resolvido.

 

[]s

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!