En una lista de números de 3 dígitos del 000 al 999 necesito poder identificar los números que tienen al menos 2 dígitos iguales, ¿podrían ayudarme con una fórmula?
Lo intenté =IF(LEFT(A98,1) = "LEFT(A98,2)"OR LEFT(A98,2) = "LEFT(A98,3)" OR LEFT(A98,1) ="LEFT(A98,3)" , "0","1")
. Pero no tengo mucha experiencia en Excel y no acepta esta fórmula.
Respuesta1
En realidad, eso no está tan lejos.
Úselo MID()
en lugar de LEFT()
, porque LEFT()
toma todas las letras y no solo una para comparar.
Elimine las comillas innecesarias y debería 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")
Asegúrate de entender las partes de lo que escribí, para que puedas corregirlo si escribí mal o olvidé un paréntesis. No tengo una computadora aquí para verificar y estoy escribiendo en un teléfono celular.
Respuesta2
La respuesta de Aganju es probablemente lo que estás buscando. Sin embargo, muchas veces la solución a un problema de Excel proviene de verlo de diferentes maneras. Aquí tienes un enfoque un poco diferente con un par de ideas que puedes guardar en tu bolsillo trasero.
IZQUIERDA, DERECHA, MEDIO
Como todo tiene tres dígitos, me resulta más fácil pensar en los dígitos como:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
Solo preferencia personal, y esto documentará cómo usar esas funciones. Ese es el carácter más a la izquierda, el del medio comienza en la posición 2 con una longitud de 1 y el carácter más a la derecha.
Pensamiento inverso
Abordaste esto desde la dirección de encontrar cualquier combinación de dígitos coincidentes. Eso requiere alguna combinación de IF, OR y/o AND. Si lo aborda desde la otra dirección, solo hay una condición que desea excluir: todos los dígitos son diferentes. Las pruebas para ese caso único se pueden realizar de manera más sencilla.
Aritmética booleana
Combinaré esto con otro truco. Estás buscando un resultado 1
o 0
, por lo que ya estás pensando en términos de aquellos que representan verdadero y falso. Puedes usar algunas propiedades matemáticas de 0
y 1
:
- cero por cualquier cosa es cero
- multiplicar un montón de ceros da cero
- multiplicar un montón de unos da uno
- La única forma en que el producto de un montón de ceros o unos puede dar uno es si todos son unos.
Poniendo todo junto
Excel trata true
y false
como 1
y 0
. Entonces, sin necesidad de IF, AND u OR, puedes usar:
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Esto produce 1
si todos los dígitos son diferentes y 0
si alguna combinación es igual. Eso diferencia las cosas. Pero si su forma de pensar es que debería ser al revés, como describió en la pregunta, puede revertirlo usando 1
menos esa fórmula:
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Y observe que los valores 0
o 1
son producidos directamente por las pruebas lógicas; no fue necesario asignar estos valores al resultado en función de las condiciones de evaluación.
Respuesta3
Aquí hay otra forma ligeramente diferente, usando la idea LEFT
MID
& RIGHT
y de multiplicación por cero de @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)
si alguno de los pares es igual, el resultado de la multiplicación es cero y el resultado de la IF
es 1.