ler pontuação em IF

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

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

por exemplo: -

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

Eu não estou entendendo quais pontos eu perdi na minha fórmula? Alguém por favor pode me ajudar a obter a minha fórmula universal? Obrigado!

Atenciosamente,

    
por Hemant Rupani 13.03.2015 / 16:07

1 resposta

0

Sua fórmula atual tem vários problemas grandes, por isso estou muito surpreso em ouvi-lo declarar que "funciona bem".

Em primeiro lugar, não há função externa atuando na instrução IF. Assim, todos, exceto o primeiro elemento da matriz produzido pela comparação, são considerados. Na verdade, sua fórmula retornará "T" se a primeira letra da string corresponder à última: todas as outras letras da string serão completamente redundantes no que diz respeito a essa 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á digitando uma fórmula com o valor de uma coluna inteira de entradas sendo passado para a função ROW para gerar a matriz para passar como o parâmetro start_num do MID. Isso não significa apenas que o Excel precisa gerar um array com 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, que obviamente resultará em erros quando passado para MID.

Tente:

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

Atenciosamente

    
por 13.03.2015 / 17:53