Como substituir células contendo letras individuais por outro valor?

1

No Excel, como eu escrevo uma fórmula que analisa um intervalo de células (digamos, A3 a A16), verifica se alguma delas é cada letra individualmente e, se forem, substitui esses valores por "0"?

Substituir e substituir parece funcionar apenas se estiver olhando para outras células (se isso fizer sentido).

    
por Jonny 16.01.2013 / 23:21

1 resposta

0

Replace and substitute seem to work only if it is looking at other cells (if that makes sense).

Dependendo da semântica (ou seja, como você olha para ela), fórmulas (e funções) não altere nada. Eles calculam um valor para a célula em que estão. Isso pode depender do (s) valor (es) em outra (s) célula (s) (por exemplo, A3:A16 ), mas uma célula não pode ter um valor e uma fórmula para manipular esse valor.

O que você pode querer fazer é definir B3 para

=IF(AND(LEN(A3)=1, NOT(EXACT(UPPER(A3),LOWER(A3)))), 0, A3)

e depois arraste / preencha isso para B16 .

Explicação:

  • Verifique o comprimento ( LEN ) do valor que estamos visualizando (cell A3 ). Se for um (1), prossiga com este teste, caso contrário, "falhará" (mais sobre isso depois) .
  • Converta o valor em A3 para maiúsculas e minúsculas. Se A3 contiver algum caractere não alfabético, como 7 , & ou , caso a conversão não terá efeito. Se for uma letra maiúscula (por exemplo, Q ), LOWER(A3) retornará seu equivalente em minúsculas ( q ) e vice-versa. Portanto, indiscutivelmente, se UPPER(A3)LOWER(A3) , A3 contiver uma letra.
  • Infelizmente para nós neste caso, o Excel geralmente não faz distinção entre maiúsculas e minúsculas; Se você comparar Q a q , o Excel dirá que eles são iguais. Então, usamos a função EXACT() para ver se eles são exatamente idênticos.
  • Combinando o acima, se A3 for um caractere e esse caractere for uma letra, é o que (eu acredito) você está procurando. Então, avaliamos B3 para o próximo argumento, ou seja, 0 . Se estiver em branco ou mais de um caractere ou não uma letra (ou seja, o teste falhou), exibiremos seu valor (ou seja, o valor de A3 ).

Há uma falha no código acima: se A3 estiver em branco, o comprimento será zero e obteremos a última parte da fórmula –– o A3 part––, mas será exibido como 0 . Para corrigir isso, faça

=IF(ISBLANK(A3), "", IF(AND(LEN(A3)=1, NOT(EXACT(UPPER(A3),LOWER(A3)))), 0, A3))

que diz, se A3 estiver em branco, defina B3 como em branco; caso contrário, prossiga com a fórmula descrita acima.

Se você quiser alterar os valores em A3:A16 permanentemente, basta copiar B3:B16 e colar valores em A3:A16 .

    
por 17.01.2013 / 01:04