Как использовать проверку данных в Excel, чтобы гарантировать, что в ячейку вводятся только элементы из списка (множественный выбор) - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть список чисел (единиц в нашем здании), которые нужны пользователям рабочей книги для ввода в ячейку. Мне нужно запретить пользователям вводить одну единицу из списка или несколько единиц в следующем формате:

[единица]

[единица] , [единица измерения], [единица измерения] et c. Обратите внимание, что единицы измерения разделяются одной запятой, а затем пробелом.

Я не могу написать макрос для этого, так как файл должен оставаться в формате .xlsx. Поэтому мне нужна формула, чтобы проверить, находится ли ячейка в одном из этих форматов. На рисунке ниже показано, что вернет эта формула, если ввести ее в столбец B.

enter image description here

До сих пор я пытался:

=OR(ISNUMBER(FIND("101",A2)),OR(ISNUMBER(FIND("102",A2)),OR(ISNUMBER(FIND("103",A2)),OR(ISNUMBER(FIND("104",A2)),OR(ISNUMBER(FIND("201",A2)),OR(ISNUMBER(FIND("202",A2)),OR(ISNUMBER(FIND("203",A2)),OR(ISNUMBER(FIND("204",A2)),OR(ISNUMBER(FIND("205",A2)),OR(ISNUMBER(FIND("206",A2)),ISNUMBER(FIND(", 101",A2)),OR(ISNUMBER(FIND(", 102",A2)),OR(ISNUMBER(FIND(", 103",A2)),OR(ISNUMBER(FIND(", 104",A2)),OR(ISNUMBER(FIND(", 201",A2)),OR(ISNUMBER(FIND(", 202",A2)),OR(ISNUMBER(FIND(", 203",A2)),OR(ISNUMBER(FIND(", 204",A2)),OR(ISNUMBER(FIND(", 205",A2)),OR(ISNUMBER(FIND(", 206",A2)))))))))))))))))))))

Он находит, есть ли хотя бы один экземпляр какого-либо из юнитов или юнитов с запятой и пробелом впереди, затем возвращает TRUE. Тем не менее, я могу ввести что-нибудь еще в ячейку, и пока есть хотя бы один из этих критериев, он все равно вернет TRUE. Мне нужна формула для возврата ИСТИНА, если ячейка содержит один (или несколько) из этих терминов, и ничего больше.

1 Ответ

1 голос
/ 23 февраля 2020

Предполагая, что все номера устройств имеют длину в три цифры, как в вашем примере, попробуйте следующее решение. Обратите внимание, что это решение использует вспомогательный столбец (который можно скрыть), чтобы определить, является ли запись действительной, где формула возвращает значение ИСТИНА или ЛОЖЬ. Затем проверка данных ссылается на этот вспомогательный столбец. К сожалению, проверка данных не примет формулу.

Предположим, что A1: E11 содержит ваши данные образца, а столбец B используется в качестве вспомогательного столбца. Сначала выберите ячейку B2. Выбрав эту ячейку, определите следующие два имени (Лента >> Формулы >> Определенные имена >> Диспетчер имен) ...

Первое определенное имя

Name:  MyArray1

Refers to:  =MID($A2&", ",ROW(INDIRECT("1:"&LEN($A2)-LEN(SUBSTITUTE($A2,",",""))+1))*5-5+1,5)

Второе определенное имя

Name:  MyArray2

Refers to:  =MID(SUBSTITUTE($A2," ",""),ROW(INDIRECT("1:"&LEN($A2)-LEN(SUBSTITUTE($A2,",",""))+1))*4-4+1,3)+0

Затем введите следующую формулу в B2, подтвердите нажатием клавиш CONTROL + SHIFT + ENTER и скопируйте вниз:

=(AND(ISNUMBER(MATCH(MyArray1,$E$2:$E$11&", ",0)))*(NOT(OR(FREQUENCY(MyArray2,MyArray2)>1))))>0

Сейчас Вы можете настроить проверку данных. Сначала выберите ячейку A2. Выбрав эту ячейку, нажмите Проверка данных (Лента >> Данные >> Инструменты данных >> Проверка данных). Затем в разделе «Настройки» щелкните стрелку раскрывающегося списка в разделе «Разрешить» и выберите «Пользовательский». Затем в разделе Формула введите следующую формулу ...

=$B2

Затем скопируйте проверку данных в другие ячейки столбца А.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...