Como validar um conjunto de caracteres no Excel?

0

Gostaria de criar uma regra de validação que proíba a entrada de determinados caracteres em uma determinada célula. Por exemplo, se meu conjunto de caracteres de pesquisa for ("/","&","%") , devo obter os seguintes resultados de pesquisa:

"Test, test" = false
"Te/st" = true
"Test...test&"= true

e os dois segundos exemplos não devem ser permitidos.

Acho que estou procurando algo semelhante à gramática WHERE ... IN do SQL. Como eu faria isso no Excel? Eu sei que posso usar apenas instruções OR () ou aninhadas IF (), mas eu estou querendo saber se há algo mais limpo.

    
por sigil 19.10.2011 / 20:56

3 respostas

2

se você estiver usando o Excel 2007, pode tentar algo com base em:

=IFERROR(FIND("%",A1),0)+IFERROR(FIND("&",A1),0)+IFERROR(FIND("/",A1),0)

que retorna 0 se a string for válida e um número positivo se não for.

se você estiver usando 2003, será necessário alterar os IFERRORs para IF (ISERROR) s. por exemplo,

=IF(ISERROR(FIND("%",A1)),0,1)+IF(ISERROR(FIND("&",A1)),0,1)+IF(ISERROR(FIND("/",A1)),0,1)

que lhe dá 0 se a string for válida e 1 se não for.

Nota: Sua lógica é negativa (ou seja, você está usando TRUE para e error e FALSE para nenhum erro), mas é fácil o suficiente para reverter se você quiser.

    
por 20.10.2011 / 01:29
1

Aqui está outra opção

=SUM(COUNTIF(A1,{"*%*","*&*","*/*"}))>0

Para obter a lista de char de um intervalo:

Se a string a testar estiver em A2, e a lista de caracteres estiver em A1: C1

=SUM(COUNTIF(A2,"*"&($A$1:$C$1)&"*"))>0
    
por 20.10.2011 / 02:17
-1

Você pode usar várias chamadas de localização. Teste se é um número, então contém um caractere proibido.

isnumber(find("/", cell)+find("%", cell)+find("&", cell))

WRONG - verifica se todos os caracteres estão na célula. Eu não testei toda a declaração porque meu excel tem outra localização e eu fui preguiçoso. Deveria ter sido ponto e vírgula também. Resposta @Rhys Gibsons está correta, obrigado @chris neilsen por insinuando!

    
por 19.10.2011 / 21:18