mail mail

Надстройка: выпадающий список с поиском (комбо)

Скриншот формы ввода (выпадающий список с поиском)

Надстройка для облегчения ввода значений в ячейку Excel

Автор: nerv
Last Update: 27/03/2012

Вам часто приходится заниматься заполнением электронных таблиц, долго и муторно выбирать варианты из выпадающих списков?

А, может, иметь дело с одними теми же, но не структурированными данными?

Раз так, то данная надстройка призвана облегчить Вам жизнь: сократить время, потраченное на нудную, однообразную работу, а вместе с тем повысить ее качество и эффективность.

Как это работает:

По нажатию Ctrl+Enter рядом с выделенной ячейкой появляется список, который позволяет не только выбирать, но и производить поиск по интересующим Вас данным.

Посмотрим, что он умеет:

 

  • Не содержит повторов (уникальный). Легко выявить однотипные данные;
  • Отсортирован по возрастанию. Возможность быстро найти то, что нужно;
  • После вызова сразу готов к поиску/выбору из списка. Лишние движения ни к чему;
  • Позволяет искать с использованием специальных подстановочных символов (*,?,~ и т.п.);
  • Осуществлять быстрый поиск по "шаблону". Если ячейка, из которой был вызван список, содержит информацию, поиск будет произведен по ней;
  • Появляется рядом с текущей/активной ячейкой и не "убегает" за пределы экрана;
  • Навигация привычными стандартными клавишами: Up [Вверх], Down [Вниз], Page Up [На страницу Вверх ], Page Down [На страницу вниз];
  • Корректная работа со всеми типами данных: строки, даты, числа;
  • Обработка ошибок формул листа. Никаких пустых строк в списке;
  • Обработка защиты ячеек листа. В защищенные ячейки ввод запрещен;
  • Информация об общем количестве списка и найденных по запросу элементах;
  • Быстрый вызов по нажатию Ctrl+Enter;
  • Быстрое закрытие: клавиша Esc;
  • Быстрый ввод клавишей Enter

Помимо всего вышеперечисленного, позволяет сэкономить на размере файла за счет формирования списка "на лету", который создается в разы быстрее, если данные упорядочены или частично упорядочены по возрастанию.

Отличия версии 1.6 от 1.5:

  • новая, более мощная/быстрая процедура сортировки;
  • переход после ввода на следующую ячейку (в зависимости от установок Excel);

Добавлены настройки:

  • использования и формирования списка (подробнее во вложении "how to use");
  • поиска с учетом регистра и без него;
  • маски поиска;
  • заголовков.

                   
Автор надстройки будет рад любым взносам по следующим реквизитам:

  • Карта Сбербанка: 67628053 9000982525
  • Яндекс Деньги: 41001156540584
  • WebMoney: WMR R219241762337

               
            По интересующим Вас вопросам просьба обращаться на nerv-net@yandex.ru

ВложениеРазмер
nerv_DropDownList_1.6.zip28.74 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Огромное спасибо за содержательный пример!
Не подскажете, как именно можно изменить этот пример под задачу облегчения ввода значений только из заранее заданного списка (несколько тысяч значений)?
То-есть то, что ввел пользователь в ячейку не должно быть сохранено, а по нажатию Enter должно открываться окно из примера с подставленной строкой поиска. Если пользователь отказывается искать по предлагаемому списку, то введенное с клавиатуры значение должно удаляться.
Осноная цель - автоматический подсчет введенных значений в сводной таблице. Если пользователь сможет вводить свои произвольные значения, их невозможно будет подсчитать в дальнейшем, но облегчить ему ввод как-то хочется.
Еще один вопрос сводится к возможности категорирования списка значений. Скажем, если список состоит из 1000 значений, разделенных на 10 групп по 100 и рядом с каждым значением можно выводить номер группы.
Еще раз спасибо за пример!

Леонид, диапазонов сколько угодно, их имена латиницей.

Спасибо и за текущий вариант надстройки.
Вопрос: попытался указать несколько диапазонов - пишет ошибку.
Т.е. можно указывать только 1 диаппазон?

Действительно, было бы очень интересно.

Нет уж буду пользоваться версией 1.5, с DDLSettings слишком мудрено, что его в каждую книгу пихать надо где хочешь воспользоваться надстройкой? Ради интереса решил выставить свои настройки в DDLSettings ничего не вышло (видимо идею не понял). был бы признателен за версию 1.5 со всеми улучшениями версии 1.6 но без использования вкладки DDLSettings. Спасибо!

Доступна новая версия надстройки. Отличия от предыдущей смотрим в статье.

Спасибо за надстройку. Пару пожеланий на будущее: Заголовок на форме у меня в виде крякозябров (MSO 2003 Eng, регион.уст: EST) и менять нельзя. Может быть Unicode для видимого текста? Вывод/выбор даты происходит в америк.формате (2/18/2012) даже если Cell.NumberFormat="dd.mm.yyyy". Пока всё. Ждём версию 1.6 :)

Огромное спасибо Вам за облегчение рабочего процесса! )

Спасибо, и Вас!)

>или работал быстрее с такой таблицеей (44000 заполненых строк) - сильный вариант.
Можно осуществить, но не бесплатно. Думаю, этот объем (разумеется, длину строк я не знаю), будет обрабатывать ~ за 0,3-0,7 сек.
Напишите мне на мыло, оно указано в статье. Только сейчас я заняться Вами не смогу, сами понимаете Новый Год)

Так же хочется поздравить уважаемого администратора сайта(EF) с Новым Годом : )

С наступающим Вас.
чудесная идея.
но как можно сделать макрос более быстрым?
у меня табличка с 44000 строк.
(сам файл весит 14 мегабайтов)
так поиск увидеть не уалось - ехель завис на долго...
можно как нибудь указать чтоб макрос просматривал последнии 1000 строк - 2000 строк (слабый вариант)
или работал быстрее с такой таблицеей (44000 заполненых строк) - сильный вариант.
возможно следует сделать сохранение и поплнения индекса (сохранить в файл)?
если это можно сделать только на комерческой основе сколько это может стоить?

Николай, это тоже "Поле со списком", только расположенное на форме. К томе же зачем так делать, не совсем понятно. Или вы планируете создать в каждой ячейке Excel такое поле со списком?)
Как вариант, могу предложить вызывать выпадающий список после частичного ввода данных, например: ввели в ячейку "ап", нажали Ctrl+Enter и поиск будет произведен по этому "ап".

В Excel есть такой элемент управления как поле со списком (ActiveX). И там есть быстрый поиск, но не такой продвинутый, как сделали вы. Можно ли реализовать ваш вариант в этом "поле со списком" ? Там поиск как раз начинается сразу при вводе данных...

Увы, так не получится.
Как только вы начали вводить данные в ячейку (ячейка перешла в режим редактирования), Excel перестаёт реагировать на внешние раздражители, и все макросы приостанавливаются.

Что можно сделать:
1) сменить комбинацию клавиш для вызова программы (по нажатию Enter, или по двойному щелчку)
2) запускать макрос после ввода данных в ячейку (макрос сам будет запускаться ПОСЛЕ изменения ячейки)
т.е. вы ввели в ячейку пару букв, нажали Enter для завершения ввода, - и автоматом запустился макрос, используя введённые буквы в качестве фильтра.

А возможно ли чтобы эта надстройка работала без Ctrl+Enter - а просто при вводе данных в ячейку ?

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
7 + 1 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.