Страницы: 1
RSS
Настроить ограничения ввода определенных символов в ячейку без VBA
 
Добрый день!

Хотел запретить ввод специальных символов с помощью проверки данных. Так же очень интересно возможно ли ограничить проверкой данных ввод русских букв / цифр / пробелов / латиницы
При поиске наткнулся на формулу которая это якобы может. Но превратить ее в что то стоящее не смог.
Код
=ISNUMBER(SUMPRODUCT(SEARCH(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")))

Очень надеюсь на помощь
 
покажите она как раз и проверяет набор символов в ячейке который её определен в формуле
Лень двигатель прогресса, доказано!!!
 
Формула для проверки данных:
Код
=МАКС(ЕСЛИОШИБКА(ПОИСКПОЗ(ПСТР("абв";СТРОКА(1:3);1);ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1);0);0))=0
здесь:
Код
ПСТР("абв";СТРОКА(1:3);1)
забиваете все символы, которые не должны вводиться в ячейку. Так же меняете в СТРОКА последнюю размерность с 3-х на кол-во запрещенных символов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, добрый день!
Все круто, но почему то работает только в первых 3 строках. Прошу прощения за тупость, но как сделать это на весь диапозон. Пример прилагаю:

может кто знает другой способ?
 
Цитата
Дмитрий Цыганцов написал:
может кто знает другой способ?
тут не в способе а в неумении его применить вопрос.
СТРОКА(1:3) - нужно закрепить СТРОКА($1:$3)
Но для запрета ввода Дмитрий усложнил
=SUM(IFERROR(FIND(MID("абв";ROW($1:$3);1);A2);0))=0
или
=SUM(IFERROR(FIND({"а";"б";"в"};A2);0))=0
но иногда надо инdерсировать, если количество введенных много  меньше чем список, то лучше в списке искать символы введенные
=SUM(-ISNUMBER(FIND(MID(A2;ROW(A$1:INDEX(A:A;LEN(A2)));1);"абв")))=0

Если говорим о списке разрешенных, то
=SUM(N(ISERROR(FIND(MID(A2;ROW(A$1:INDEX(A:A;LEN(A2)));1);"абв"))))=0

Например если нужно ограничить только русскими буквами, то
=SUM(--ISODD(MATCH(CODE(MID(A2;ROW($A$1:INDEX(A:A;LEN(A2)));1));{0;168;169;184;185;192})))=0
Исключить их
=SUM(--ISEVEN(MATCH(CODE(MID(A16;ROW($A$1:INDEX(A:A;LEN(A16)));1));{0;168;169;184;185;192})))=0


Вариантов - масса
По вопросам из тем форума, личку не читаю.
 
Цитата
Дмитрий Цыганцов написал:
почему то работает только в первых 3 строках
потому что про протяжку речи не было. Надо просто закрепить смещение по строкам:
Код
СТРОКА($1:$3)
Изменено: Дмитрий(The_Prist) Щербаков - 19.04.2021 08:51:23
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо огромное!
 
А возможно к предыдущему условию добавить ограничение по количеству символов?

кол-во символов не должно превышать 10
не допустимые символы: латинские буквы, цифры, дефис, знак слеш "/"
Я так понимаю, что нет?
 
Цитата
Дмитрий Цыганцов написал:
Я так понимаю, что нет?
не правильно понимаете. Умножить на сравнение длинны с нужным числом.
По вопросам из тем форума, личку не читаю.
 
а можете показать на примере как встроить в эту формулу
Код
=МАКС(ЕСЛИОШИБКА(ПОИСКПОЗ(ПСТР("абв";СТРОКА(1:3);1);ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1);0);0))=0
Страницы: 1
Наверх