Как пометить все строки в столбце, содержащие специальные символы, но разрешающие запятые в Excel?

Как пометить все строки в столбце, содержащие специальные символы, но разрешающие запятые в Excel?

янашел старый пост на 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_\-,]"

Связанный контент