В списке из трехзначных чисел от 000 до 999 мне нужно иметь возможность идентифицировать числа, которые имеют как минимум 2 цифры одинаковые, не могли бы вы помочь мне с формулой.
Я пытался =IF(LEFT(A98,1) = "LEFT(A98,2)"OR LEFT(A98,2) = "LEFT(A98,3)" OR LEFT(A98,1) ="LEFT(A98,3)" , "0","1")
. Но я очень неопытен в Excel и не принимаю эту формулу.
3 ответа
Это на самом деле не так уж далеко.
Используйте MID()
вместо LEFT()
, потому что LEFT()
берет для сравнения все буквы, а не только одну.
Удалите ненужные кавычки, и это должно работать:
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")
Обязательно разберитесь с фрагментами того, что я написал, чтобы вы могли исправить это, если я набрал опечатку или забыл скобку - у меня нет компьютера для проверки, и я печатаю на мобильном телефоне.
Ответ Аганджу, вероятно, то, что вы ищете. Тем не менее, во многих случаях решение проблемы с Excel происходит с разных сторон. Вот немного другой подход с парой идей, которые вы можете оставить в своем заднем кармане.
Влево, вправо, в середине
Так как все состоит из трех цифр, мне легче думать о них как о:
LEFT(A98,1)
MID(A98,2,1)
RIGHT(A98,1)
Просто личные предпочтения, и это будет документально подтверждать, как использовать эти функции. Это самый левый 1 символ, середина начинается в позиции 2 для длины 1 и самый правый 1 символ.
Обратное мышление
Вы подошли к этому со стороны поиска любой комбинации совпадающих цифр. Это требует некоторой комбинации IF, OR и / или AND. Если вы подойдете к нему с другой стороны, то есть только одно условие, которое вы хотите исключить - все цифры разные. Тестирование для этого отдельного случая может быть сделано проще.
Булева арифметика
Я объединю это с другим трюком. Вы ищете результат 1
или 0
, поэтому вы уже думаете с точки зрения тех, кто представляет истину и ложь. Вы можете использовать некоторые математические свойства 0
и 1
:
- ноль раз все равно нулю
- умножение связки нулей дает ноль
- умножение связки единиц дает один
- единственный способ, которым продукт группы нулей или единиц может дать один, - это если все они
Положить его вместе
Excel обрабатывает true
и false
как 1
и 0
. Таким образом, не нуждаясь в IF, AND или OR, вы можете использовать:
= (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
Это дает 1
если все цифры разные, и 0
если любая комбинация одинакова. Это отличает вещи. Но если вы думаете, что все должно быть наоборот, как вы описали в вопросе, вы можете изменить его, используя 1
минус эту формулу:
= 1 - (LEFT(A98,1)<>MID(A98,2,1)) * (LEFT(A98,1)<>RIGHT(A98,1)) * (MID(A98,2,1)<>RIGHT(A98,1))
И обратите внимание, что значения 0
или 1
создаются непосредственно логическими тестами; не было необходимости присваивать эти значения результату на основе условий оценки.
Вот еще немного другой способ, с помощью @ fixer1234 LEFT
MID
& RIGHT
и умножение на ноль идеи:
=IF((LEFT(A99,1)-MID(A99,2,1)) * (LEFT(A99,1)-RIGHT(A99,1)) * (MID(A99,2,1)-RIGHT(A99,1))=0,1,0)
если любая из пар равна, результат умножения равен нулю, а результат IF
равен 1.