=IF(MID(B3,ROW(A:A),1)=MID(B3,LEN(B3)+1-ROW(A:A),1),"T")

Я читал палиндром в ячейке B3 с приведенной выше формулой, она отлично работает (если найти без знаков препинания и пробелов). но когда я пытаюсь читать палиндром с пунктуацией и пробелами, он не читается хорошо.

например:-

B3:lol ----> Палиндром B3:l ol ----> Палиндром ........(но, поскольку между l & ol есть пробел, он не должен быть Палиндромом)

Я не понимаю, какие моменты я пропустил в моей формуле? Может кто-нибудь, пожалуйста, помогите мне получить мою формулу универсальной? Спасибо!


С Уважением,

1 ответ1

0

Ваша текущая формула имеет несколько больших проблем, поэтому я очень удивлен, когда вы заявляете, что она "работает отлично".

Прежде всего, в операторе IF нет внешней функции. Следовательно, все, кроме самого первого элемента в массиве, произведенном сравнением, рассматриваются. По сути, ваша формула будет возвращать "T", если первая буква в вашей строке совпадает с последней: все остальные буквы в строке полностью избыточны в отношении этого выражения. Согласно вашей формуле, такая строка, как ABCDEA, считается палиндромом. И именно поэтому ваш пример "L OL" возвращает "T" - средние символы просто не имеют значения.

Во-вторых, вы вводите массив в формулу, в которой вся запись столбца передается в функцию ROW, чтобы сгенерировать массив для передачи в качестве параметра start_num в MID. Это не только означает, что Excel должен генерировать массив, состоящий из более чем одного миллиона элементов (что требует удивительного и ненужного количества ресурсов), но также означает, что ваш второй массив будет состоять из тысяч и тысяч отрицательных значений, что, конечно, приведет к ошибкам при передаче в MID.

Пытаться:

=IF(SUMPRODUCT(N(MID(B3,ROW(INDEX(A:A,1):INDEX(A:A,LEN(B3))),1)<>MID(B3,LEN(B3)+1-ROW(INDEX(A:A,1):INDEX(A:A,LEN(B3))),1)))=0,"T","")

С уважением

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