Страницы: 1
RSS
Выпадающий список Excel с проверкой значений по маске
 
Всем привет. Передо мной встала следующая задача: требуется, чтобы в выпадающем списке можно было ввести вариации значений по определенной маске.
Допустим, имеется куча работников с именем Анна и разными фамилиями. Требуется, чтобы выпадающий список проверял слово "Анна", а потом допускал, чтобы через пробел была введена любая фамилия (любое слово). Все это в ОДНОЙ ячейке. Маска типа ("Анна ";"##########"). Если ошибся в имени "Анна" и пробеле после него - чтобы выдавал ошибку, если все правильно - чтобы дальше молчал. У меня сделан список с мультивыбором как здесь http://planetaexcel.ru/techniques/1/181/, вариант 3.

В идеале хочется иметь значения и обычные и с маской, то есть чтобы диапазон для списка выглядел вот так (условно):

Михаил
Николай;#####
Алексей
Петр
Павел
Дмитрий;#####
Анна;#####

А, соответственно, заполненная по мультивыбору ячейка так (условно): Михаил, Николай Стасюк, Николай Манойлов, Алексей, Петр, Павел, Дмитрий Нагорный, Дмитрий Подгорный... etc

Помогите кто чем может. Спасибо.
 
Ничего не понял... Если выпадающий список, то подсуньте ему диапазон, где все эти варианты имеются.  
 
Много слишком вариантов получается тогда. Около 2000. Листать можно до скончания времен. Поэтому надо, чтобы было одно начало и какой хочешь конец.
 
Всё равно не понимаю: как Excel должен понять, что в одном случае только имя можно, а в другом - имя и фамилию?
Потом: если у Вас 2000 сотрудников (клиентов) то зачем прокручивать их всех? Можно выводить (в ListBox, например) список только тех, кто соответствует трём-четырем первым введённым символам. Подобные решения на форуме были.
 
В том-то и вопрос собственно, можно ли дать Excel понять, когда можно, а когда нет. Листбокс тут неудобен, к сожалению, я уже думал.
 
Цитата
jenlenin написал: можно ли дать Excel понять, когда можно, а когда нет
Во всём ведь ведь должна быть какая-то логика, алгоритм - иначе не поймёт ))
А почему ЛистБокс неудобен? Начали набирать текст, а он по мере ввода символов заполняется ПОДХОДЯЩИМИ значениями. Вам останется только выбрать нужное. В "Копилке" есть тема "Альтернатива выпадающему списку". Посмотрите - может чего почерпнёте оттуда...списку"
 
Надо пояснить, наверное. Пример с именами-фамилиями я взял с потолка конечно, чисто для примера. Файл не могу скинуть, простите, по моральным соображениям. В реальности имеется строка ячеек, в которую поочередно вносятся номер, ФИО, а в последнем столбце что клиент купил, через запятую (реализовано по статье мною упомянутой ранее). Далее, то что внесено в ячейки переносится функцией ВПР на новый лист в импровизированную "форму" и печатается. Печать конкретного клиента настраивается набором буквы "п" в первом столбце напротив нужного человека. ВПР ищет у кого есть "п" и переносит его ячейки в поля "формы". С листбоксом ВПР вряд ли сработает. И клиентов 8000, и на каждого листбокс? Так вот, я про тот последний столбец, где "что купил". У некоторых наименований есть размеры (пишем в скобочках). Размеры ооочень разные, и в выпадающий список их все вносить тупо, кроме того размеры есть не у всех товаров. Вот и встал вопрос, как при проверке эксель-списком вносить некоторым товарам размеры в скобочках, чтобы без экселевского мата.
 
Цитата
jenlenin написал: И клиентов 8000, и на каждого листбокс?
Подозреваю, что Вы не знаете, что такое ЛистБокс, если задаёте такой вопрос )
Удивляет другое: выпадающий список на 8000 позиций Вы готовы терпеть, а ЛистБокс, где будет, например, всего 10-20 подходящих строк, - нет. Но, это Ваше право - я только предложил один из вариантов )
 
Листбокс, если не ошибаюсь, это элемент не то Форм, не то ActiveX, и это крутая штука, не спорю. По поводу 8000 строк. Это строки клиентов, а не строки для выпадающего списка. В конце каждой из 8000 строк клиентов (в последнем то бишь столбце) есть выпадающий список товаров (он не из 8000 клиентов сделан, а совсем из другого отдельного динамического диапазона!). Так вот, чтобы он не растянулся на 2000 значений, с перебором всех комбинаций размеров, хочется заставить Эксель разбираться где можно, а где нельзя ставить размеры.
 
два листбокса сделать - не вариант?
в одном - список наименований.
в другом - список размеров для выбранного наименования.
там. где размеров нет - второй список пустой или даже вообще недоступный.

Вы не обижайтесь - но с масками Вы какую-то ерунду задумали.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
jenlenin написал: хочется заставить Эксель разбираться где можно, а где нельзя ставить размеры.
Ищите алгоритм (признаки, критерии...)  ;)

А лучше всего - соорудите НЕБОЛЬШОЙ файл-аналог, и покажите - как там и что должно выбираться.
 
Связанные списки - предлагал, думал. Все гундят, что два поля сложно, проще просто печатать не думая в одном. И при этом данные проверять нужно, чтобы без очепяток. И что делать, если два, три, четыре наименования с размерами. Сделать 5 полей уж сразу?)) Думал еще функцию СЦЕПИТЬ засунуть вот в таком виде СЦЕПИТЬ("рейка сосновая (";*тут вот как раз каким-то макаром заставить Эксель брать значения размеров из диапазона*;" м)") в диапазон списка.

Сейчас попробую файл-аналог создать, действительно, что тут голословить
 
Большой очень файл, 2 МБ
https://yadi.sk/i/RVDIQRZeh7BfK Вот тут можно слить
 
Можно же было так? Вместо 4  сообщений (некоторые через минуту) только 2.
Наверное, большой секрет: свои сообщения можно дополнять.
 
Сильно в лом было сносить в файле листы, данные, списки. Я надеялся, что и так до чего-то додумаемся.
 
Т.е. Вам лень поработать над файлом, но не жаль времени помогающих, которые будут в нем ковыряться?
Легче послать по ссылке, чем поработать самому?
Когда же такие, как Вы, поймут, что от этого зависит качество и скорость помощи Вам же?
 
Цитата
jenlenin написал: Файл не могу скинуть, простите, по моральным соображениям
Цитата
jenlenin написал: Сильно в лом было сносить в файле листы, данные, списки.
это вот как понять?
какая-то удивительно нестойкая мораль оказалась...

пс. мне "сильно в лом" (ц) качать 2 метра и рыться в них.
два часа и 15 сообщений угробили на пустую болтовню.
лимит исчерпан )
да и спать пора
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Как видите не лень. И так как мне не лень, помогающие будут ковыряться в максимально упрощенном и при этом максимально приближенном к боевым условиям файле.

З.Ы. Но я таки снес все попирающие мораль данные, так что мораль стойкая.)

З.З.Ы. Ну что ж, в лом так в лом, спать так спать. Всем спасибо, кто принял участие в обсуждении.
Изменено: jenlenin - 06.06.2015 01:01:42
 
Цитата
jenlenin написал: Как видите не лень. И так как мне не лень, помогающие будут ковыряться в максимально упрощенном и при этом максимально приближенном к боевым условиям файле.
помогающие помогают по конкретному вопросу, а не ковыряются во всех ваших боевых условиях  :( - они и к бою то не особо стремятся... мы люди мирные  :)... см вариант 12 (ввод по маске) - правда базу надо иметь...  запросами sql можно подтянуть и нужные размеры, и даже склеить можно пробовать, наверно, Field1 + Field2 - для отображения в одной ячейке...  (если изначально потратить время на создание нормальной базы)...
(альтернатива: ВПР и Сцепить - как вы справедливо заметили - таблицу соответствий можно засунуть в скрытый лист - для использования этой альтернативы)...
а по хорошему - если ковыряться, то в раздел Работа...
P.S. если не лень, можете ещё посмотреть вариант выпадающего пост27 (файл оттуда прикладываю со вставленной кнопкой для запуска UserForm - чтобы избежать лишних вопросов  ;) )
P.P.S т.к. ваш алгоритм решения вашей проблемы очень аморфный - то и помощь лишь на то, чтобы вы сами задумались... успехов
Изменено: JeyCi - 06.06.2015 10:08:37
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Благодарю, JeyCi
Страницы: 1
Читают тему
Наверх