Como sinalizar todas as linhas em uma coluna que contém caracteres especiais, mas permite vírgulas no Excel?

Como sinalizar todas as linhas em uma coluna que contém caracteres especiais, mas permite vírgulas no Excel?

EUencontrei uma postagem antiga sobre superusuárioonde o usuário estava tentando sinalizar todas as linhas na coluna A que continham caracteres especiais. Uma das respostas incluiu uma solução de formatação condicional:

=SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<48)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>45))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>57)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>90)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>95))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>122)*1)

Esta fórmula verifica cada caractere de cada nome de arquivo e determina se seu código ASCII está fora dos valores de caracteres permitidos. Os caracteres permitidos incluem (AZ, az, 0-9, sublinhados e travessões).

Minha necessidade équaseexatamente o mesmo, exceto que também preciso permitir vírgulas e não tenho talento suficiente para descobrir como modificar o código para permitir isso. Existe alguém que possa ajudar?

Responder1

EDIT: Voltei e li o comentário original. Essas fórmulas devem funcionar.

=SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<48)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>45)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>57)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>90)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>95))+SUMPRODUCT((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>122)*1)

Eu adicionei este bit nas fórmulas acima:

(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44)

44é o equivalente ASCII de a comma. Então, essa parte cuidará do arquivo comma.


Vejo que você mudou sua pergunta. Você pode fornecer alguns valores de amostra para A1?

Não entendi bem a fórmula que você forneceu - ROW(INDIRECT("1:"&LEN(A1)))sempre será 1; então não sei qual é o sentido de chamá-lo.


Basta alterar esta linha do outro link:

RegEx.Pattern = "[^A-Za-z0-9_-]"

Para isso:

RegEx.Pattern = "[^A-Za-z0-9_\-,]"

informação relacionada