IEncontré una publicación antigua en Superusuario.donde el usuario intentaba marcar todas las filas de la columna A que contenían caracteres especiales. Una de las respuestas incluía una solución de formato 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 carácter de cada nombre de archivo y determina si su código ASCII está fuera de los valores de caracteres permitidos. Los caracteres permitidos incluyen (AZ, az, 0-9, guiones bajos y guiones).
mi necesidad escasiexactamente lo mismo, excepto que también necesito permitir comas y no tengo el talento suficiente para descubrir cómo modificar el código para permitirlas. ¿Hay alguien que pueda ayudar?
Respuesta1
EDITAR: Regresé y leí el comentario original. Estas fórmulas deberían 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)
Agregué este bit en las fórmulas anteriores:
(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44)
44
es el equivalente ASCII de un comma
. Entonces, esta parte se encargará del comma
.
Veo que cambiaste tu pregunta. ¿Puede proporcionar algunos valores de muestra para A1
?
No entiendo bien la fórmula que proporcionaste; ROW(INDIRECT("1:"&LEN(A1)))
siempre será 1; así que no sé cuál es el punto de llamarlo.
Simplemente cambie esta línea del otro enlace:
RegEx.Pattern = "[^A-Za-z0-9_-]"
A esto:
RegEx.Pattern = "[^A-Za-z0-9_\-,]"