Temos cerca de 3500 documentos cujos nomes de arquivos precisam ser limpos manualmente para remover caracteres especiais como colchetes, dois pontos, ponto e vírgula, vírgulas etc.
Eu tenho um arquivo de texto que despejei no excel e estou tentando criar uma coluna que sinalize o nome do arquivo para modificação, se ele incluir caracteres especiais. A fórmula do pseudocódigo seria
=IF (cellname contains [^a-zA-z_-0-9], then "1", else "0")
para sinalizar a linha se ela contiver caracteres diferentes de AZ, 0-9, - ou _, independentemente do caso.
Alguém sabe de algo que pode funcionar para mim? Hesito em codificar e fazer if
declarações massivas , se houver algo rápido e fácil.
microsoft-excel
worksheet-function
special-characters
dwwilson66
fonte
fonte
Respostas:
Nenhum código? Mas é tão curto e fácil, bonito e ... :(
Seu padrão RegEx
[^A-Za-z0-9_-]
é usado para remover todos os caracteres especiais em todas as células.Editar
Isso é o mais próximo possível da sua pergunta original.
O segundo código é uma função definida pelo usuário
=RegExCheck(A1,"[^A-Za-z0-9_-]")
com 2 argumentos. O primeiro é a célula a verificar. O segundo é o padrão RegEx a ser verificado. Se o padrão corresponder a qualquer um dos caracteres da sua célula, ele retornará 1, caso contrário, 0.Você pode usá-lo como qualquer outra fórmula normal do Excel se abrir o editor VBA pela primeira vez com ALT+ F11, inserir um novo módulo (!) E colar o código abaixo.
Para usuários novos no RegEx, explicarei seu padrão:
[^A-Za-z0-9_-]
fonte
=RegExReplace(cell)
não é reconhecida .... e estou um pouco enferrujado ao criar novas funções.Usando algo semelhante ao código do nixda, aqui está uma função definida pelo usuário que retornará 1 se a célula tiver caracteres especiais.
As UDFs são muito fáceis de instalar e usar:
Se você salvar a pasta de trabalho, o UDF será salvo com ela. Se você estiver usando uma versão do Excel posterior a 2003, salve o arquivo como .xlsm em vez de .xlsx
Para remover o UDF:
Para usar o UDF do Excel:
= IsSpecial (A1)
Para saber mais sobre macros em geral, consulte:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
e
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
e
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
para detalhes sobre UDFs
As macros devem estar ativadas para que isso funcione !
fonte
If sCh Like "[0-9a-zA-Z ]" Or sCh = "_" Then
que a macro assuma que os espaços são caracteres válidos?Aqui está uma solução de formatação condicional que sinalizará os registros com caracteres especiais.
Basta aplicar uma nova regra de formatação condicional aos seus dados que usa a fórmula (extremamente longa) abaixo, onde
A1
está o primeiro registro na coluna de nomes de arquivos:Essa fórmula verifica cada caractere de cada nome de arquivo e determina se seu código ASCII está fora dos valores permitidos. Infelizmente, os códigos de caracteres permitidos não são todos contíguos; é por isso que a fórmula deve usar somas de
SUMPRODUCT
s. A fórmula retorna o número de caracteres incorretos que existem. Todas as células que retornam um valor maior que 0 são sinalizadas.Exemplo:
fonte
Eu usei uma abordagem diferente para encontrar caracteres especiais. Criei novas colunas para cada um dos caracteres permitidos e, em seguida, usei uma fórmula como esta para contar quantas vezes esse caractere permitido estava em cada entrada de linha (Z2):
Depois, somei o número de caracteres permitidos em cada linha e comparei-o com o comprimento total da entrada da linha.
E, finalmente, classifiquei na última coluna (BF2) para encontrar valores negativos, o que me levou às colunas que precisavam de correção.
fonte