6

В списке из трехзначных чисел от 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 ответа3

11

Это на самом деле не так уж далеко.

Используйте 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")

Обязательно разберитесь с фрагментами того, что я написал, чтобы вы могли исправить это, если я набрал опечатку или забыл скобку - у меня нет компьютера для проверки, и я печатаю на мобильном телефоне.

6

Ответ Аганджу, вероятно, то, что вы ищете. Тем не менее, во многих случаях решение проблемы с 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 создаются непосредственно логическими тестами; не было необходимости присваивать эти значения результату на основе условий оценки.

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .