Tenemos alrededor de 3500 documentos cuyos nombres de archivo deben eliminarse manualmente para eliminar caracteres especiales como corchetes, dos puntos, punto y coma, comas, etc.
Tengo un archivo de texto que he descargado en Excel, y estoy tratando de crear una columna que marque el nombre del archivo para su modificación si incluye caracteres especiales. La fórmula del pseudocódigo sería
=IF (cellname contains [^a-zA-z_-0-9], then "1", else "0")
para marcar la fila si contiene caracteres que no sean AZ, 0-9, - o _, independientemente del caso.
Alguien sabe de algo que pueda funcionar para mí? Dudo en el código y la if
declaración masiva si hay algo rápido y fácil.
Respuestas:
¿Sin código? Pero es tan corto, fácil, hermoso y ... :(
Su patrón RegEx
[^A-Za-z0-9_-]
se utiliza para eliminar todos los caracteres especiales en todas las celdas.Editar
Esto es lo más cerca que puedo llegar a tu pregunta original.
El segundo código es una función definida por el usuario
=RegExCheck(A1,"[^A-Za-z0-9_-]")
con 2 argumentos. El primero es la celda para verificar. El segundo es el patrón RegEx para verificar. Si el patrón coincide con alguno de los caracteres en su celda, devolverá 1, de lo contrario 0.Puede usarlo como cualquier otra fórmula normal de Excel si primero abre el editor VBA con ALT+ F11, inserta un nuevo módulo (!) Y pega el código a continuación.
Para los usuarios nuevos en RegEx, explicaré su patrón:
[^A-Za-z0-9_-]
fuente
=RegExReplace(cell)
no es reconocida ... y estoy un poco oxidado en la creación de nuevas funciones.Usando algo similar al código de nixda, aquí hay una función definida por el usuario que devolverá 1 si la celda tiene caracteres especiales.
Las funciones definidas por el usuario (UDF) son muy fáciles de instalar y usar:
Si guarda el libro, el UDF se guardará con él. Si está utilizando una versión de Excel más tarde que 2003, debe guardar el archivo como .xlsm en lugar de .xlsx
Para eliminar el UDF:
Para usar el UDF de Excel:
= IsSpecial (A1)
Para obtener más información sobre las macros en general, consulte:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
y
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
y
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
para detalles sobre UDF
¡Las macros deben estar habilitadas para que esto funcione !
fuente
If sCh Like "[0-9a-zA-Z ]" Or sCh = "_" Then
que la macro suponga que los espacios son caracteres válidos?Aquí hay una solución de formato condicional que marcará los registros con caracteres especiales.
Simplemente aplique una nueva regla de formato condicional a sus datos que use la fórmula (extremadamente larga) a continuación, donde
A1
está el primer registro en la columna de nombres de archivo:Esta fórmula verifica cada carácter de cada nombre de archivo y determina si su código ASCII está fuera de los valores de caracteres permitidos. Desafortunadamente, los códigos de caracteres permitidos no son todos contiguos, por eso la fórmula tiene que usar sumas de
SUMPRODUCT
s. La fórmula devuelve el número de caracteres malos que hay. Se marcan las celdas que devuelven un valor mayor que 0.Ejemplo:
fuente
Utilicé un enfoque diferente para encontrar personajes especiales. Creé nuevas columnas para cada uno de los caracteres permitidos, y luego usé una fórmula como esta para contar cuántas veces ese carácter permitido estaba en cada entrada de fila (Z2):
Luego sumé el número de caracteres permitidos en cada fila, y luego lo comparé con la longitud total de la entrada de la fila.
Y finalmente, clasifiqué en la última columna (BF2) para encontrar valores negativos, lo que me llevó a las columnas que necesitaban corrección.
fuente