Ir para conteúdo
Fórum Script Brasil
  • 0

Limitar informações repetidas na mesma linha


TSinésio

Pergunta

Pessoal,

tem alguma função no excel que eu consigo limitar informações repetidas na mesma linha?

Ex: na linha 20 eu escrevi "Thiago", essa palavra não poderia aparecer novamente.

eu consegui esse macro que faz o que eu quero, só que ele está limitando as informações somente nas colunas, não nas linhas!

Como faço para ele limitar nas linhas e não nas colunas??

------------

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim nLinComp, nLinFim As Integer

nLinFim = 1

Do While Not IsEmpty(Cells(nLinFim, 1))
nLinFim = nLinFim + 1
Loop

nLinComp = 1
Do While nLinComp <= nLinFim - 2
If Cells(nLinFim - 1, 1).Value = Cells(nLinComp, 1).Value Then
MsgBox "Informação duplicada", vbCritical, "Cadastro CGC !"
Cells(nLinFim - 1, 1).Activate
Cells(nLinFim - 1, 1).Interior.ColorIndex = 4
Exit Sub
Else
nLinComp = nLinComp + 1
End If
Loop
Cells(nLinComp + 1, 1).Activate
Cells(nLinFim - 1, 1).Interior.ColorIndex = xlNone
Cells(nLinFim, 1).Interior.ColorIndex = xlNone
End Sub

--------------------

Agradeço a atenção

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

dando uma olhada no seu codigo, acho q você pudia fazer o seguinte:

ta vendo no seu codigo q aparece escrito Cells e logo em seguida é aberto parenteses?? dentro do parenteses tem sempre ([alguma coisa], 1). se você trocar isso por (1, [alguma coisa]) em todas as vezes q aparecer escrito Cells deve fazer o q você quer.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara,

desde já agradeço sua ajuda, solucionou o problema, porém está dando dois erros:

1) quando digito alguma informação em alguma linha e dou enter a caixa de texto vai para A2. Ex: digitei algo na j 35, quando dou enter a celula volta pra A2 (mas a informação fica no lugar certo).

2) só marca como informação repetida na linha 1. As outras linhas não verificam se está repetido.

O código ta assim:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim nLinComp, nLinFim As Integer

nLinFim = 1

Do While Not IsEmpty(Cells(1, nLinFim))
nLinFim = nLinFim + 1
Loop

nLinComp = 1
Do While nLinComp <= nLinFim - 2
If Cells(1, nLinFim - 1).Value = Cells(1, nLinComp).Value Then
MsgBox "Informação duplicada", vbCritical, "Cadastro CGC !"
Cells(1, nLinFim - 1).Activate
Cells(1, nLinFim - 1).Interior.ColorIndex = 4
Exit Sub
Else
nLinComp = nLinComp + 1
End If
Loop
Cells(nLinComp + 1, 1).Activate
Cells(1, nLinFim - 1).Interior.ColorIndex = xlNone
Cells(1, nLinFim).Interior.ColorIndex = xlNone
End Sub

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

Use o próprio recurso nativo do Excel:

Selecionar o Range de dados a serem validados, no caso a linha 10 inteira.

Dados -> Validação de Dados

Em Configurações, no ComboBox Permitir, selecionar a opção Personalizado.

Em Configurações, no ComboBox Fórmula, usar a seguinte Fórmula =CONT.SE($10:$10;A10)=1

Depois, personalize as mensagens de erro na guia Alerta de erro.

Este exemplo serve para o Excel 2007. Ver referência de validação de dados para as demais versões.

Link para o comentário
Compartilhar em outros sites

  • 0
Use o próprio recurso nativo do Excel:

Selecionar o Range de dados a serem validados, no caso a linha 10 inteira.

Dados -> Validação de Dados

Em Configurações, no ComboBox Permitir, selecionar a opção Personalizado.

Em Configurações, no ComboBox Fórmula, usar a seguinte Fórmula =CONT.SE($10:$10;A10)=1

Depois, personalize as mensagens de erro na guia Alerta de erro.

Este exemplo serve para o Excel 2007. Ver referência de validação de dados para as demais versões.

Não deu certo... ele não distinguiu dados iguais.

Eu até prefiro que seja por uma função do próprio excel, porque talvez a pessoa que vai usar, não tenha domínio de como habilitar o macro.

é, o codigo original acho q so testava a coluna 1 tb e agora e ficou testando so a linha 1.

mas você quer q, quando ele digita, ele testa todas as linhas da planilha ou so a linha em q ele esta digitando.

Sim, eu gostaria que verificasse toda a planilha, porém só entre linhas.

Por ex: digitei "eu" na linha 1.. na linha 1 não poderia ter "eu" denovo

mas em outras linhas pode, só não posso repetir exatamente a mesma duas ou mais vezes na linha.

Editado por TSinésio
Link para o comentário
Compartilhar em outros sites

  • 0

Engraçado,

eu fiz pelá validação de dados e deu certinho, só que em colunas, nas linhas não deu!

para colunas fiz assim:

Caixa de Validação de Dados -> Personalizado e em Fórmula digitei a seguinte fórmula =CONT.SE(B$3:B$11; B3) = 1

Deu certinho!

Para as linhas fiz assim:

=CONT.SE(A$1:N$1; A1) = 1

E não deu... :( alguém consegue me explicar?

no comeco da sub, logo depois das declaracoes das variaveis, insira o codigo:

Dim t As Integer
t = Target.Row

e então, sempre onde aparecer Cells(1, [alguma coisa]) troque esse primero 1 por t e veja se não funciona.

Funcionou... mas ele só pega uma celula após. Ex: se digitei o erro na célula A2, ele só verifica na B2, da C pra frente não verifica mais...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...