янашел старый пост на Super Userгде пользователь пытался отметить все строки в столбце A, содержащие специальные символы. Один из ответов включал решение условного форматирования:
=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)
Эта формула проверяет каждый символ каждого имени файла и определяет, находится ли его код ASCII за пределами допустимых значений символов. Допустимые символы включают (AZ, az, 0-9, подчеркивания и тире).
Моя потребность в том,почтиточно так же, только мне еще нужно разрешить запятые, а я недостаточно талантлив, чтобы разобраться, как изменить код, чтобы разрешить это. Есть кто-нибудь, кто может помочь?
решение1
EDIT: Я вернулся и прочитал оригинальный комментарий. Эта формула должна работать.
=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)
Я добавил этот фрагмент в формулы выше:
(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<>44)
44
является эквивалентом ASCII для comma
. Таким образом, этот бит будет заботиться о comma
.
Я вижу, что вы изменили свой вопрос. Можете ли вы предоставить некоторые примеры значений для A1
?
Я не совсем понимаю формулу, которую вы привели — ROW(INDIRECT("1:"&LEN(A1)))
она всегда будет равна 1; поэтому я не знаю, как ее называть.
Просто измените эту строку из другой ссылки:
RegEx.Pattern = "[^A-Za-z0-9_-]"
К этому:
RegEx.Pattern = "[^A-Za-z0-9_\-,]"