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_\-,]"