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

6

Em uma lista de 3 dígitos de 000 a 999, eu preciso ser capaz de identificar os números que têm pelo menos 2 dígitos iguais, você poderia me ajudar com uma fórmula.
Eu 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 eu sou muito inexperiente no excel e não aceita essa fórmula.

    
por B Cooper 14.06.2016 / 06:19

3 respostas

10

Isso não é tão longe assim.

Use MID() em vez de LEFT() , porque LEFT() usa todas as letras e não apenas uma para comparação.

Remova as aspas desnecessárias e isso deve 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 eu escrevi, para que você possa corrigi-lo se eu tiver digitado incorretamente ou esquecido de um suporte - não tenho computador aqui para verificar e estou digitando em um telefone celular.

    
por 14.06.2016 / 07:57
6

A resposta de Aganju é provavelmente o que você está procurando. Muitas vezes, porém, a solução para um problema do Excel vem da análise de diferentes maneiras. Aqui está uma abordagem um pouco diferente com algumas idéias que você pode guardar no bolso de trás.

ESQUERDA, DIREITA, MID

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 caracter mais à esquerda de 1, o início do meio na posição 2 para um comprimento de 1 e o caractere mais à direita de 1.

Pensamento reverso

Você abordou isso da direção de encontrar qualquer combinação de dígitos correspondentes. Isso requer alguma combinação de IF, OR e / ou AND. Se você se aproximar da outra direção, há apenas uma condição que você deseja excluir - todos os dígitos sendo diferentes. O teste para esse caso único 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 você já está pensando em termos daqueles que representam verdadeiro e falso. Você pode usar algumas propriedades matemáticas de 0 e 1 :

  • zero vezes qualquer coisa é zero
  • multiplicando um grupo de zeros produz zero
  • multiplicando um grupo de unidades produz um
  • a única maneira que o produto de um monte de zeros ou uns pode render um é se eles são todos aqueles

Juntando

O 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 rende 1 se todos os dígitos forem diferentes e 0 se qualquer combinação for a mesma. Isso diferencia as coisas. Mas se a sua mentalidade é que deveria ser o inverso, como você descreveu na pergunta, você pode inverter isso 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 de 0 ou 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.

    
por 14.06.2016 / 09:15
1

Aqui está outra maneira ligeiramente diferente, usando LEFT MID & RIGHT e multiplicação por zero ideia:

=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 será zero e o resultado do IF será 1.

    
por 14.06.2016 / 10:51