leia a pontuação em IF

leia a pontuação em IF
=IF(MID(B3,ROW(A:A),1)=MID(B3,LEN(B3)+1-ROW(A:A),1),"T")

Eu estava lendo o Palíndromo na célula B3 com a fórmula acima, funciona bem (se encontrar sem pontuação e espaços). mas quando tento ler o Palíndromo com pontuação e espaços não foi bem lido.

por exemplo:-

B3:lol---->Palindrome B3:l ol---->Palindrome ........( mas como ocorre espaço entre l & ol , não deve ser Palíndromo)

Não estou entendendo quais pontos perdi na minha fórmula? alguém pode me ajudar a tornar minha fórmula universal? Obrigado!


Cumprimentos,

Responder1

Sua fórmula atual tem vários problemas importantes, por isso estou muito surpreso em ouvir você declarar que "funciona bem".

Em primeiro lugar, não existe nenhuma função externa atuando na instrução IF. Conseqüentemente, todos, exceto o primeiro elemento da matriz produzida pela comparação, são considerados. Na verdade, sua fórmula retornará "T" se a primeira letra da sua string corresponder à última: todas as outras letras da string são completamente redundantes no que diz respeito a esta expressão. De acordo com sua fórmula, uma string como ABCDEA é considerada um palíndromo. E é também por isso que o seu exemplo de "L OL" retorna "T" - os caracteres do meio simplesmente não importam.

Em segundo lugar, você está inserindo uma fórmula em uma matriz com entradas de uma coluna inteira sendo passadas para a função ROW para gerar a matriz para passar como MID'snúm_inicialparâmetro. Isso não significa apenas que o Excel terá que gerar um array composto por mais de um milhão de elementos (exigindo uma quantidade surpreendente e desnecessária de recursos), mas também significa que seu segundo array consistirá em milhares e milhares de valores negativos, o que, claro, resultará em erros quando passado para MID.

Tentar:

=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","")

Cumprimentos

informação relacionada