Comparando dígitos em um número em uma célula do Excel

Comparando dígitos em um número em uma célula do Excel

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 1ou 0, então já está pensando em termos daqueles que representam o verdadeiro e o falso. Você pode usar algumas propriedades matemáticas de 0e 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 truee falsecomo 1e 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 1se todos os dígitos forem diferentes e 0se 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 1menos 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 0or 1sã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& RIGHTe 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.

informação relacionada