Em uma lista de números de 3 dígitos de 000 a 999 preciso ser capaz de identificar os números que possuem pelo menos 2 dígitos iguais, você poderia me ajudar com uma fórmula.
Tentei =IF(LEFT(A98,1) = "LEFT(A98,2)"OR LEFT(A98,2) = "LEFT(A98,3)" OR LEFT(A98,1) ="LEFT(A98,3)" , "0","1")
. Mas sou muito inexperiente em excel e ele não aceita essa fórmula.
Responder1
Na verdade, isso não está tão longe.
Use MID()
em vez de LEFT()
, porque LEFT()
leva todas as letras e não apenas uma para comparação.
Remova as aspas desnecessárias e tudo deverá funcionar:
IF(OR(MID(A98,1,1)=MID(A98,2,1),MID(A98,1,1)=MID(A98,3,1),MID(A98,2,1)=MID(A98,3,1)),"1","0")
Certifique-se de entender as partes do que escrevi, para que você possa corrigi-lo caso eu tenha digitado errado ou esquecido algum colchete - não tenho computador aqui para verificar e estou digitando em um telefone celular.
Responder2
A resposta de Aganju é provavelmente o que você está procurando. Muitas vezes, porém, a solução para um problema do Excel vem de olhar para ele de diferentes maneiras. Aqui está uma abordagem um pouco diferente com algumas ideias que você pode guardar no bolso de trás.
ESQUERDA, DIREITA, MEIO
Como tudo tem três dígitos, acho mais fácil pensar nos dígitos como:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
Apenas preferência pessoal, e isso documentará como usar essas funções. Esse é o 1 caractere mais à esquerda, o meio começando na posição 2 com comprimento de 1 e o 1 caractere mais à direita.
Pensamento reverso
Você abordou isso no sentido de encontrar qualquer combinação de dígitos correspondentes. Isso requer alguma combinação de SE, OU e/ou E. Se você abordar isso de outra direção, há apenas uma condição que você deseja excluir - todos os dígitos sendo diferentes. O teste para esse único caso pode ser feito de forma mais simples.
Aritmética Booleana
Vou combinar isso com outro truque. Você está procurando um resultado 1
ou 0
, então já está pensando em termos daqueles que representam o verdadeiro e o falso. Você pode usar algumas propriedades matemáticas de 0
e 1
:
- zero vezes qualquer coisa é zero
- multiplicar um monte de zeros resulta em zero
- multiplicar um monte de unidades resulta em um
- a única maneira de o produto de um monte de zeros ou uns produzir um é se todos forem uns
Juntar as peças
Excel trata true
e false
como 1
e 0
. Portanto, sem precisar de IF, AND ou OR, você pode usar:
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Isso ocorre 1
se todos os dígitos forem diferentes e 0
se alguma combinação for igual. Isso diferencia as coisas. Mas se a sua mentalidade é que deveria ser o contrário, como você descreveu na pergunta, você pode reverter usando 1
menos essa fórmula:
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
E observe que os valores 0
or 1
são produzidos diretamente pelos testes lógicos; não foi necessário atribuir esses valores ao resultado com base nas condições de avaliação.
Responder3
Aqui está outra maneira um pouco diferente, usando a ideia de LEFT
MID
& RIGHT
e multiplicação por zero do @ fixer1234:
=IF((LEFT(A99,1)-MID(A99,2,1)) * (LEFT(A99,1)-RIGHT(A99,1)) * (MID(A99,2,1)-RIGHT(A99,1))=0,1,0)
se algum dos pares for igual, o resultado da multiplicação é zero e o resultado da multiplicação IF
é 1.