Выпадающий список с быстрым поиском
Классический выпадающий список в ячейке листа Excel, сделанный через Данные — Проверка (Data — Validation) — простая и удобная штука, которую ежедневно применяют очень многие пользователи. Однако, у этого списка есть один весьма серьезный недостаток — в нём нет быстрого поиска по первым символам, т.е. фильтрации (отбора) только тех значений, куда введённый фрагмент входит как подстрока. Это серьезно ухудшает удобство пользования даже если в списке всего пара-тройка десятков позиций, а при нескольких сотнях убивает юзабилити напрочь.
Давайте рассмотрим как всё же реализовать подобный трюк. В качестве подопытного кролика возьмём список 250 лучших фильмов по версии IMDb:
Конечная цель — создать выпадающий список (ячейка G3), в котором можно будет быстро находить нужные фильмы, введя только жанр, год или фрагмент названия, например «гамп».
Шаг 1. Определяем, кто нам нужен
Сначала нам нужно понять, какие из исходных ячеек нужно показывать в списке, т.е. определить содержится ли введённый в выпадающем списке текст (например, жанр «детектив») в названии фильма. Для этого добавим слева от исходных данных еще один столбец с функцией ПОИСК (SEARCH), которая ищет заданную подстроку в тексте и выдает либо порядковый номер символа, где он был обнаружен, либо ошибку, если его там нет:
Теперь завернем нашу формулу в функцию проверки ЕЧИСЛО (ISNUMBER), которая превратит числа в логическую ИСТИНУ (TRUE), а ошибки — в ЛОЖЬ (FALSE):
Теперь сделаем так, чтобы ЛОЖЬ превратилась в 0, а вместо ИСТИНА в столбце появились последовательно возрастающие индексы-числа 1,2,3… и т.д. Это можно сделать с помощью добавления к нашей же формуле ещё парочки функций:
Здесь функция ЕСЛИ (IF) проверяет что мы имеем (ИСТИНУ или ЛОЖЬ), и
- если была ИСТИНА, то выводит максимальное значение из всех вышестоящих чисел + 1
- если была ЛОЖЬ, то выводит 0
Шаг 2. Отбираем в отдельный список
Дальше — проще. Теперь банальной функцией ВПР (VLOOKUP) просто выведём все найденные названия (я добавил столбец с порядковыми номерами для удобства):
После этого можно поиграться, вводя в жёлтую ячейку G2 разные слова и фразы и понаблюдать за тем, как наши формулы отбирают только подходящие фильмы:
Шаг 3. Создаем именованный диапазон
Теперь создадим именованный диапазон, который будет ссылаться на отобранные фильмы. Для этого выбрем на вкладке Формулы команды Диспетчер имен — Создать (Formulas — Name Manager — Create):
Имя диапазона может быть любым (например, Фильмы), а самое главное — это функция СМЕЩ (OFFSET), которая и делает всю работу. Напомню её синтаксис, если вы подзабыли:
=СМЕЩ(начальная_ячейка; сдвиг_вниз; сдвиг_вправо; высота; ширина)
У нас:
- В качестве начальной ячейки задаём первую ячейку списка отобранных элементов (E2).
- Сдвиги вниз и вправо у нас отсутствуют, т.е. равны нулю.
- Высота диапазона у нас соответствует максимальному значению индекса из столбца А.
- Ширина диапазона — 1 столбец.
Осталось сделать выпадающий список.
Шаг 4. Создаем выпадающий список
Выделим жёлтую ячейку (G2) и выберем на вкладке Данные команду Проверка данных (Data — Validation). В открывшемся окне выбрем Список (List) в поле Тип данных (Allow), а в качестве источника введем имя нашего созданного диапазона со знаком равно перед ним:
Чтобы Excel не ругался при вводе на неточное совпадение наших фраз с исходным списком, на вкладке Сообщение об ошибке (Error Alert) в этом окне нужно выключить флажок Выводить сообщение об ошибке (Show error alert):
Вот и всё. Можно жать на ОК и наслаждаться результатом:
Для пущего удобства при вводе с клавиатуры можно использовать Ctrl+Enter вместо Enter после ввода текста (так активная ячейка не уходит вниз) и сочетание клавиш Alt+стрелка вниз, чтобы развернуть выпадающий список без мыши.
P.S.
В принципе, можно было бы и не продолжать, но недавно Microsoft выкатила обновление вычислительного движка Excel, который теперь поддерживает динамические массивы и имеет специальные функции для работы с ними. Большинству пользователей они станут доступны в ближайшие месяцы, но даже если пока этих возможностей в вашем Excel нет — грех не показать как элементарно с их помощью решается наша задача.
Всё, что мы делали на Шагах 1-3 заменяется одной(!) формулой, где новая функция ФИЛЬТР (FILTER) отбирает из исходного диапазона A2:A251 только те фильмы, которые содержат заданную подстроку.
А дальше останется при создании выпадающего списка указать в качестве источника первую ячейку диапазона отобранных фильмов (C2) и добавить к ней знак #, чтобы получить ссылку на весь динамический массив:
И всё. Никаких именованных диапазонов и медленных СМЕЩ, никаких танцев с дополнительными столбцами и формулами. Песня!
Ссылки по теме
- Что такое динамические массивы в Excel
- Разбор трех основных функций динамических массивов: СОРТ, ФИЛЬТР и УНИК
- 4 способа создать выпадающий список на листе Excel
Функция автозавершения Excel позволяет легко вводить один и тот же текст в несколько ячеек. Используя автозавершение, введите несколько первых букв вашей записи в ячейку, и Excel автоматически завершит ее на основе других записей, которые вы уже сделали в столбце. В дополнение к уменьшению количества текста, который необходимо набирать, эта функция гарантирует, что ваши записи будут внесены правильно и согласованно.
Рассмотрим, как это работает. Предположим, вы вводите информацию о продукте в столбец. Один продукт называется «сахар-песок». Первый раз, когда вы вводите Сахар-песок в ячейку, Excel запоминает эту запись. Позже, когда вы начнете набирать слово Сахар в этом столбце, Excel распознает слово по нескольким первым буквам и завершит его ввод за вас. Просто нажмите Enter, и все готово.
Автозавершение также изменяет регистр букв автоматически. Если начать ввод со слова сахар (со строчной буквой «с») во второй записи, Excel сделает букву «с» прописной в соответствии с предыдущей записью в столбце.
Если столбец содержит несколько записей, которые соответствуют первым нескольким символам, Excel не отобразит предложение по автоматическому завершению, пока новая запись не будет соответствовать одной из старых однозначным образом. Например, если столбец также содержит продукт под названием «сахар-рафинад», автозавершение не будет реализовано, пока вы не введете либо первую букву слова «песок», либо первую букву слова «рафинад».
Вы также можете получить доступ к ориентированной на использование мыши версии автозавершения, щелкнув правой кнопкой мыши на ячейке и выбрав в контекстном меню пункт Выбрать из раскрывающегося списка. Excel отобразит список, в котором содержатся все записи в текущем столбце. Остается просто выбрать ту, которую вы хотите (рис. 32.1).
Вы даже можете получить доступ к списку с клавиатуры: нажмите Shift+F10 для отображения контекстного меню, а затем нажмите клавишу К (горячую клавишу для команды Выбрать из раскрывающегося списка). Используйте кнопки со стрелками, чтобы сделать свой выбор, и нажмите Enter.
Имейте в виду, что функция автозавершения работает только в пределах смежных столбцов ячеек. Если у вас есть, например, пустая строка, автозавершение будет анализировать только содержимое ячеек под пустой строкой. Если функция автозавершения покажется вам отвлекающей, ее можно отключить в разделе Дополнительно диалогового окна Параметры Excel (выберите Файл ► Параметры). Флажок Автозавершение значений ячеек находится в области Параметры правки.
Автозаполнение ячеек в Microsoft Excel
Мало кому понравится долго и монотонно вводить одинаковые или однотипные данные в таблицу. Это довольно скучная работа, забирающая большое количество времени. В программе Excel имеется возможность автоматизировать ввод таких данных. Для этого предусмотрена функция автозаполнения ячеек. Посмотрим, как она работает.
Работа автозаполнения в Эксель
Автозаполнение в Microsoft Excel осуществляется с помощью специального маркера заполнения. Для того, чтобы вызвать этот инструмент нужно навести курсор на нижний правый край любой ячейки. Появится небольшой черный крестик. Это и есть маркер заполнения. Нужно просто зажать левую кнопку мыши и потянуть в ту сторону листа, где вы хотите заполнить ячейки.
То, как будут заполняться ячейки, уже зависит от того типа данных, который находится в исходной ячейке. Например, если там будет обычный текст в виде слов, то при перетягивании с помощью маркера заполнения производится его копирование в другие ячейки листа.
Автозаполнение ячеек числами
Чаще всего автозаполнение используется для ввода большого массива чисел, которые следуют по порядку. Например, в определенной ячейке стоит цифра 1, а нам нужно пронумеровать ячейки от 1 до 100.
- Активируем маркер заполнения и проводим им вниз на необходимое количество ячеек.
Как видим, после этого весь нужный диапазон заполнился числами по порядку.
Но можно сделать ещё проще. Вам не нужно будет вызывать параметры автозаполнения. Для этого, когда тянете маркер заполнения вниз, то кроме зажатой левой кнопки мыши, нужно зажать ещё кнопку Ctrl на клавиатуре. После этого, заполнение ячеек числами по порядку происходит сразу же.
Существует также способ сделать автозаполнения ряда прогрессии.
- Вносим в соседние ячейки два первых числа прогрессии.
Инструмент «Заполнить»
В программе Excel есть также отдельный инструмент, которые называется «Заполнить». Расположен он на ленте во вкладке «Главная» в блоке инструментов «Редактирование».
- Заносим данные в любую ячейку, а затем выделяем её и диапазон ячеек, который собираемся заполнить.
С помощью данного инструмента можно также заполнить ячейки прогрессией.
- Заносим число в ячейку и выделяем диапазон ячеек, который будет заполняться данными. Жмем на кнопку «Заполнить», а в появившемся списке выбираем пункт «Прогрессия».
- выбрать расположение прогрессии (по столбцам или по строкам);
- тип (геометрическая, арифметическая, даты, автозаполнение);
- установить шаг (по умолчанию он равен 1);
- установить предельное значение (необязательный параметр).
Кроме того, в отдельных случаях, устанавливаются единицы измерения.
Автозаполнение формулами
Одним из основных инструментов Excel являются формулы. При наличии в таблице большого числа одинаковых формул можно также воспользоваться функцией автозаполнения. Суть не меняется. Нужно тем же способом маркера заполнения скопировать формулу в другие ячейки. При этом, если в формуле содержатся ссылки на другие ячейки, то по умолчанию при копировании таким способом координаты их меняются по принципу относительности. Поэтому, такие ссылки называют относительными.
Если вы хотите, чтобы при автозаполнении адреса стали фиксированными, то нужно в исходной ячейке перед координатами строк и столбцов поставить знак доллара. Такие ссылки называются абсолютными. Затем, производится обычная процедура автозаполнения с помощью маркера заполнения. Во всех заполненных таким способом ячейках формула будет абсолютно неизменная.
Автозаполнение другими значениями
Кроме того, в программе Excel предусмотрено автозаполнение другими значениями по порядку. Например, если вы введете какую-нибудь дату, а затем, воспользовавшись маркером заполнения, выделите другие ячейки, то весь выбранный диапазон окажется заполненный датами в строгой последовательности.
Точно так же, можно произвести автозаполнение по дням недели (понедельник, вторник, среда…) или по месяцам (январь, февраль, март…).
Более того, если в тексте будет любая цифра, то Эксель распознает её. При использовании маркера заполнения произойдет копирование текста с изменением цифры по нарастающей. Например, если вы запишите в ячейку выражение «4 корпус», то в других ячейках, заполненных с помощью маркера заполнения, это название преобразится в «5 корпус», «6 корпус», «7 корпус» и т.д.
Добавление собственных списков
Возможности функции автозаполнения в Excel не ограничивается определенными алгоритмами или предустановленными списками, такими как, например, дни недели. При желании пользователь может в программу добавить свой личный список. Тогда, при записи в ячейку любого слова из элементов, которые находятся в перечне, после применения маркера заполнения, данным списком будет заполнен весь выделенный диапазон ячеек. Для того, чтобы добавить свой список, нужно выполнить такую последовательность действий.
- Делаем переход во вкладку «Файл».
Как видим, автозаполнение в Экселе является очень полезным и удобным инструментом, который позволяет значительно сэкономить время на добавлении одинаковых данных, повторяющихся списков, и т.д. Преимуществом этого инструмента является и то, что он настраиваемый. В него можно вносить новые списки или изменять старые. Кроме того, с помощью автозаполнения можно произвести быстрое заполнение ячеек различными видами математических прогрессий.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
При вводе первых букв подбирается слово в excel как сделать
Во многих случаях требуется, чтобы первая буква в ячейке таблицы была заглавной (прописной). Если пользователь изначально ошибочно везде вписал строчные буквы или скопировал в Excel данные из другого источника, в котором все слова начинались с маленькой буквы, то можно потратить очень большое количество сил и времени, чтобы привести внешний вид таблицы в желаемое состояние. Но, возможно у Эксель имеются специальные инструменты, с помощью которых можно эту процедуру автоматизировать? Действительно, у программы есть функция для изменения строчных букв на прописные. Давайте рассмотрим, как она работает.
Процедура трансформации первой буквы в заглавную
Не стоит ожидать, что в Excel имеется отдельная кнопка, нажав на которую, можно автоматически превратить строчную букву в заглавную. Для этого придется использовать функции, причем сразу несколько. Впрочем, в любом случае, этот путь с лихвой окупит временные затраты, которые потребовались бы на ручное изменение данных.
Способ 1: замена первой буквы в ячейке на заглавную
Для решения поставленной задачи используется основная функция ЗАМЕНИТЬ, а также вложенные функции первого и второго порядка ПРОПИСН и ЛЕВСИМВ.
- Функция ЗАМЕНИТЬ осуществляет замену одного символа или части строки на другие, согласно указанным аргументам;
- ПРОПИСН – делает буквы прописными, то есть, заглавными, что нам и требуется;
- ЛЕВСИМВ – возвращает указанное количество знаков конкретного текста в ячейке.
То есть, исходя из этого набора функций, с помощью ЛЕВСИМВ мы вернем в указанную ячейку первую букву, с помощью оператора ПРОПИСН сделаем её заглавной, а затем функцией ЗАМЕНИТЬ заменим строчную букву на прописную.
Общий шаблон данной операции будет выглядеть следующим образом:
Но лучше все это рассмотреть на конкретном примере. Итак, мы имеем заполненную таблицу, в которой все слова пишутся с маленькой буквы. Нам предстоит первый символ в каждой ячейке с фамилиями сделать заглавным. Первая ячейка с фамилией имеет координаты B4.
- В любом свободном месте данного листа или на другом листе записываем следующую формулу:
После этого, лишние данные будут очищены, и мы получим тот результат, который добивались: в каждой ячейке таблицы первое слово начинается с большой буквы.
Способ 2: каждое слово с большой буквы
Но бывают случаи, когда нужно сделать не только первое слово в ячейке, начинающимся с заглавной буквы, а вообще, каждое слово. Для этого тоже существует отдельная функция, причем, она намного проще предыдущей. Эта функция называется ПРОПНАЧ. Её синтаксис очень простой:
На нашем примере её применение будет выглядеть следующим образом.
- Выделяем свободную область листа. Кликаем по значку «Вставить функцию».
- В открывшемся Мастере функций ищем «ПРОПНАЧ». Найдя это наименование, выделяем его и жмем на кнопку «OK».
- Открывается окно аргументов. Ставим курсор в поле «Текст». Выделяем первую ячейку с фамилией в исходной таблице. После того, как её адрес попал в поле окна аргументов, жмем на кнопку «OK».
Существует и другой вариант действий без запуска Мастера функций. Для этого мы должны, как и при предыдущем способе, ввести в ячейку функцию вручную с записью координат исходных данных. В данном случае эта запись будет иметь следующий вид:
Потом нужно будет нажать кнопку Enter.
Выбор конкретного варианта полностью зависит от пользователя. Для тех юзеров, которые не привыкли держать в голове множество разных формул, естественно, легче действовать при помощи Мастера функций. В то же время, другие считают, что намного быстрее ручной ввод оператора.
После этого мы получим практически неизменную исходную таблицу, но только все слова в обработанных ячейках теперь будут прописаны с большой буквы.
Как видим, несмотря на то, что массовую смену строчных букв на прописные в Excel через специальную формулу нельзя назвать элементарной процедурой, тем не менее, это намного проще и удобнее, чем менять символы вручную, особенно, когда их очень много. Указанные выше алгоритмы берегут не только силы юзера, но и самое ценное – время. Поэтому желательно, чтобы постоянный пользователь Эксель мог использовать данные инструменты в своей работе.
Мы рады, что смогли помочь Вам в решении проблемы.
Задайте свой вопрос в комментариях, подробно расписав суть проблемы. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Итак, полистал форум, особенно тему «Списки в Эксель»
Так и не нашлось в теме ни одного решения…..
В общем есть список, допустим имена. список постоянно пополняется новыми именами (вплоть до 65536 строк)
И есть ячейка в таблице, в которую периодически заносятся данные имена
как сделать так, чтобы при наборе первых букв, появлялись все позиции с набранной последовательностью букв(например вводим Лю, и сразу появляется список с Любовь и Люся). И нам остается курсором выбрать из списка например Люся и оно появляется в ячейке. Если вдруг данного имени не окажется в списке то после нажатия кнопки «Ввод» это имя добавляется в конец списка.
Программы для работы с электронными таблицами, такими как Excel, являются отличным инструментом для организации, хранения и оперирования данными. Вот некоторые приемы и парочка хитростей, которые сделают ваш ввод данных в электронную таблицу более удобным и быстрым.
1. Переход указателя к нужной ячейке во время ввода данных.
Excel автоматически перемещает указатель в следующую ячейку вниз, когда вы нажимаете Enter после ввода данных в ячейку. Это отвлекает, особенно, если вы хотите добавить данные в следующий столбец в строке, а не ниже. Чтобы изменить это поведение, используйте окно настроек Excel.
Выберите: Файл -> Параметры -> Дополнительно -> Параметры правки. Поставьте флажок «Переход к другой ячейке после нажатия клавиши ВВОД» и в соответствующем раскрывающемся списке выберите то направление, которое вам больше подходит в данный момент.
Совет: При отключении флажка, клавиши со стрелками можно использовать для управления перемещением указателя. Например, если вы вводите данные в строке, нажмите клавишу со стрелкой вправо, а не Enter, чтобы перейти к следующей ячейке в той же строке.
2. Храните данные в таблицах данных:
Таблица Excel является сеткой из строк и столбцов. При добавлении данных в Excel, он интуитивно не использует таблицы данных. Однако таблицы данных Excel являются простым и мощным инструментом. Они помогают легко добавлять больше строк и столбцов, не беспокоясь об обновлении ссылок формул, опций, настроек фильтров и т.д. Таблицы данных сами позаботятся о форматировании.
Для добавления таблицы данных Excel, выберите диапазон ячеек, содержащих данные, и нажмите на кнопку Таблица, находящуюся во вкладке «Вставка» на ленте или нажмите сочетание клавиш «CTRL + T».
Несколько хитростей таблиц данных:
- Таблицы данных вставляются со своим собственным набором фильтров данных и параметром сортировки по умолчанию. Без таблиц данных Excel допускает только один набор фильтров на листе. Однако если рабочий лист имеет более одной таблицы, то каждая таблица может иметь свои собственные фильтры и параметры сортировки.
- Формулы внутри таблицы данных могут использовать осмысленные имена заголовков вместо использования ссылок на ячейки. Кроме того, при добавлении или удалении строк не нужно беспокоиться об обновлении ссылок.
- С помощью структурированных ссылок, вычисления внутри столбцов становятся очень простыми. Кроме того, Excel автоматически заполняет формулу внутри остальной части ячеек в столбце.
- Таблицы данных могут быть отформатированы одним кликом мыши по пункту «Стили» во вкладке «Конструктор».
- Повторяющиеся данные могут быть удалены из таблиц данных одним кликом мыши по пункту «Удалить дубликаты» во вкладке «Конструктор» на ленте.
- Таблицы данных могут быть преобразованы обратно в диапазон одним кликом мыши по кнопке «Преобразовать в диапазон» во вкладке «Конструктор».
- Таблицы данных могут быть экспортированы в список SharePoint так же одним кликом мыши по кнопке «Экспорт» во вкладке «Конструктор».
- Таблицы данных можно суммировать, добавив итоговую строку, поставив флажок в чек-боксе «Строка итогов» во вкладке «Конструктор».
Ввод данных с помощью форм
После того, как Таблицы данных созданы на рабочем листе, формы обеспечивают возможность ввода данных в этих таблицах, используя специальное диалоговое окно. Для добавления кнопки формы на панели быстрого доступа, выполните следующие действия:
Нажмите на кнопку Настройка панели быстрого доступа
Выберите из списка пункт Другие команды. Выберите Все команды из выпадающего списка. Чуть ниже найдите Форма в большом списке и выделите его
Нажмите кнопку Добавить, и этот пункт должен добавиться в панель быстрого доступа после нажатия на кнопку ОК
Для того, чтобы получить доступ к диалоговому окну форм, просто выберите таблицу данных на рабочем листе и нажмите на добавленную кнопку из панели быстрого доступа.
В этом диалоговом окне есть следующие кнопки:
- Добавить: Добавляет новую запись в таблицу данных
- Удалить: Удаляет отображаемую запись из таблицы данных
- Вернуть: Восстановление изменений, внесенных в таблицу данных
- Назад / Далее: Находит записи, указанные в поле Критерии
- Критерии: Получение данных, которые удовлетворяют критериям набора
- Закрыть: Закрывает диалоговое окно
4. Проверка данных с помощью раскрывающегося списка:
Создание раскрывающегося списка и обеспечение ввода данных с его использованием гарантирует, что целостность данных всегда будет в порядке. Для создания раскрывающегося списка:
- Введите список элементов в диапазоне.
- Выделите ячейку, которая будет содержать выпадающий список
- Выберите вкладку Данные на ленте -> Работа с данными -> Проверка данных.
- В диалоговом окне Проверка вводимых значений, перейдите на вкладку Настройки.
- В раскрывающемся списке Тип данных, выберите Список.
- В поле Источник укажите диапазон, содержащий нужные вам элементы.
Совет: Если в раскрывающемся списке мало данных, то вы можете ввести значения непосредственно в поле Источник, разделенные запятыми.
5. Автозамены для ввода данных:
Автозамена по умолчанию подразумевает такие полезные вещи, как написание предложений с заглавной буквы, или исправление случайного нажатия Caps Lock. Кроме того, можно настроить Автозамену создавая сокращения для часто используемых слов или фраз. Например, ниже я использую аббревиатуру: «гос» для «государство».
Для того чтобы добраться до Параметров автозамены, нажмите на Файл -> Параметры -> Правописание -> Параметры автозамены. В качестве альтернативы можно воспользоваться сочетанием клавиш: ALT + T + Т.
Автозамена несколько хитростей:
- Чтобы добавить новую автозамену, введите заменяемый текст в поле Заменять и введите замещающий текст, который будет в поле На, а затем нажмите кнопку Добавить.
- Чтобы удалить автозамену найдите ее в списке автозамен и нажмите кнопку Удалить.
- Чтобы отменить сработавшую автозамену, нажмите CTRL + Z при вводе информации в ячейку.
- Для совместного использования автозамен с вашими друзьями или коллегами, просто найдите файл *.acl на своем компьютере и скопируйте его на компьютер друга или коллеги.
- Excel преобразует адрес электронной почты или записи веб URL в гиперссылки с использованием автозамены. Чтобы изменить автоматическое преобразование текста в гиперссылку, просто нажмите кнопку Отменить (или нажмите Ctrl + Z) после того, как вы вводите текст. Гиперссылка исчезнет, но текст, который вы ввели останется неизменным. Чтобы полностью отключить эту функцию, снова перейдите в раздел Параметры автозамены -> Нажмите на вкладку: Автоформат при вводе -> уберите флажок: «адреса Интернета и сетевые пути гиперссылками».
6. Автозаполнения для автоматизации ввода данных:
Функция автозаполнения в Excel позволяет легко вводить один и тот же текст в несколько ячеек. Просто введите первые несколько букв текста в ячейку и Excel автоматически завершит запись, основываясь на других записях, которые вы уже сделали в этом же столбце. Это помогает не только уменьшить процесс набора текста, но и согласует введение данных.
Автозаполнение несколько хитростей:
- Автозаполнение работает только на смежной ячейке, поэтому не оставляйте пустых строк, чтобы в полной мере использовать автозаполнение
- Автозаполнение изменяет регистр букв автоматически
- Если столбец содержит несколько вхождений записи, которые соответствуют первым нескольким вводимых вами символам, то автозаполнение не сработает пока ваша запись не станет соответствовать хотя бы одному из них полностью.
- Вы можете получить доступ к автозаполнению, кликнув правой кнопкой мыши по ячейке и выбрав пункт «Выбрать из раскрывающегося списка». Также вы можете получить доступ к этому же раскрывающемуся списку с помощью горячей клавиши: Shift + F10.
7. Аудиокоррекция (работает, к сожалению, только с английским текстом и числами)
Excel имеет удобный инструмент для преобразования текста в речь, который способен считывать содержимое ячейки по мере их ввода. Кроме того, он также может считывать определенный диапазон ячеек.
Чтобы добавить эту функцию на панель инструментов быстрого доступа, нажмите на кнопку Настройка панели быстрого доступа, выберите пункт Другие команды из списка, выберите Все команды из выпадающего списка. Добавьте все команды, начинающиеся с «Проговаривать», нажав на Добавить.
Чтобы прочесть диапазон ячеек, выберите нужный диапазон ячеек и нажмите на кнопку Проговорить ячейки. Вы можете изменить порядок чтения, нажав на «Проговаривать ячейки по строкам» или «Проговаривать ячейки по столбцам». Если вы хотите чтобы текст проговаривался по мере ввода, нажмите на кнопку «Проговаривать ячейки после ввода».
Microsoft Excel предлагает несколько функций для работы с регистром текста, находящегося в ячейках листа. Но ни одна из данных функций самостоятельно не способна решить задачу, когда требуется сделать первую букву текста заглавной, а все остальные перевести в нижний регистр.
Функция LOW переводит весь текст в нижний регистр, функция UPPER переводит весь текст в верхний регистр, функция PROPER переводит в верхний регистр первую букву каждого слова в тексте.
Поэтому для решения задачи будем использовать сочетание нескольких функций в изящной формуле, которая работает и с первой буквой, делая ее заглавной, и с остатком текста, переводя его в нижний регистр:
=UPPER(LEFT(A1))&RIGHT(LOWER(A1);LEN(A1)-1)
То же на русском языке:
=ПРОПИСН(ЛЕВСИМВ(А1))&ПРАВСИМВ(СТРОЧН(А1);ДЛСТР(А1)-1)
За варианты, помощь и идеи спасибо форуму сайта www.planetaexcel.ru и отдельно господину Казанскому.
В категории Правописание представлены только две группы элементов управления: Параметры автозамены и При исправлении орфографии в программах Microsoft Office.
Автоматизация многих действий может быть как благом, так и истинным проклятием, если вы в ней своевременно не разобрались. Именно механизм автозамены зачастую нервирует начинающих пользователей Excel тем, что без спросу заменяет и подставляет вместо введенных вами символов нечто другое, чего вы вводить не собирались. При этом особую циничность приобретают действия Excel, когда вы упорствуете в своем желании видеть на экране именно то, что набираете на клавиатуре. Вы вводите, а Excel заменяет, вы исправляете, а программа заменяет снова.
Между тем все дело в том, как настроены в Excel параметры автозамены. Стоит изменить параметры — и программа начинает вести себя вполне благопристойно. В разделе Параметры автозамены рядом с надписью Настройка исправления и форматирования текста при вводе располагается единственная кнопка, которая выводит на экран окно настройки параметров автозамены и автоформата при вводе.
- Показать кнопки возможностей автозамены — в этом режиме после выполнения автозамены появляется кнопка, позволяющая отменить выполненное действие или подобрать другое слово для замены из
списка. - Исправлять две прописные буквы в начале слова — этот режим позволяет исправлять достаточно часто встречающуюся ошибку набора, когда вы вовремя не успеваете отпустить клавишу Shift, и в результате у вас в имени или названии появляются две прописные буквы вместо одной, первой. В этом режиме такая ошибка будет исправляться автоматически прямо во время ввода. Как только в конце слова, в котором появилась подобная ошибка, вы нажмете клавишу пробела, ошибка будет исправлена.
- Делать первые буквы предложений прописными — этот режим очень полезен для тех, кто печатает быстро и вслепую. Он позволяет в начале каждого предложения не нажимать клавишу Shift. Обнаружив в тексте точку, Excel автоматически сделает следующую букву прописной. Если же вы используете в тексте много сокращений, то вам нужно либо добавить все сокращения в список исключений (см. далее), либо сбросить данный флажок, поскольку после каждого сокращения, оканчивающегося точкой, у вас будет появляться прописная буква в середине предложения.
- Названия дней с прописной буквы — этот режим тоже может сильно раздражать… Вы пишете «окружающая среда», а вам услужливо переделывают предложение в «окружающая Среда».
- Устранять последствия случайного нажатия CapsLock — этот режим призван учитывать то, что люди часто, пытаясь нажать клавишу Shift, промахиваются и нажимают соседнюю клавишу CapsLock. В результате первая буква слова становится строчной, а остальные — прописными. Для автоматического исправления подобных ошибок установите этот флажок.
- Заменять при вводе — вы можете сформировать свой список автозамены, а также отредактировать существующий. Это очень удобно, если вам приходится часто вводить неудобопечатаемые длинные словосочетания. Вы можете, например, вместо слов «коллоидный слабощелочной раствор» задать последовательность автозамены «кср» и в дальнейшем вводить эту последовательность, которая автоматически будет заменяться нужным вам словосочетанием.
Многочисленные флажки, расположенные в разделе При исправлении орфографии в программах Microsoft Office, предназначены для настройки системы проверки правописания.
Выпадающий список в MS EXCEL на основе Проверки данных
Смотрите такжеВо-первых, созданный выпадающий ActiveXИсточник (Source) где то слямзил,Выбор 2 Выбор = s & на 13 массиве имени «города». же через 5 есть похожий прототип не получается. Макросы, As Range) On позволит нам вводить я хочу… АСпасибо. Источник.xlsx должен быть книги (это справедливо
При заполнении ячеек данными, список может находитсязнак равенства и
сейчас уже не 4 X(i, 1) &и получиться второй Файл перезалил. минут решаю сам
… буду очень которые выложены в Error Resume Next новые значения. хочу я чтоСудя по количеству открыт и находиться
для EXCEL 2007 часто необходимо ограничить
А. Простейший выпадающий список — ввод элементов списка непосредственно в поле Источник
в двух принципиально имя диапазона (т.е. вспомню.Но если речьМысли на доработку «~» ‘формирует по список, а нифига
Виктор C эту проблему) признателен!! интернет не работают. If Not Intersect(Target,Вызываем редактор Visual Basic. бы при нажатии просмотров, и нулевому в той же
и более ранних). возможность ввода определенным разных состояниях -=Товары только о переменной, (не очень понимаю
сочетанию букв в ((( Dim bu: Добрый день подскажитеразобрался )Заранее большущее спасибо! На форуме тоже Range(«Е2:Е9»)) Is Nothing Для этого щелкаем на ячейку появилось
количеству ответов, то папке, иначе необходимоИзбавимся сначала от второго списком значений. Например, режиме отладки, когда). то переменную уже как реализовано): любом месте текста As Boolean Private как можно реализоватьнужно было просто
Апострофф не нашел.
Б. Ввод элементов списка в диапазон (на том же листе, что и выпадающий список)
And Target.Cells.Count = правой кнопкой мыши выпадающее окно со что я хочу указывать полный путь недостатка – разместим имеется ячейка, куда можно настраивать его
Нажмите я добавлял.1) Окно по If UCase(txt) = Sub ComboBox1_Change() End поиск в выпадающем
изменить в свойствах: …Подскажите пожалуйста как 1 Then Application.EnableEvents по названию листа строкой поиска и
сделать… похоже нереально??? к файлу. Вообще перечень элементов выпадающего пользователь должен внести параметры и свойства,ОКМогу перевести на ширине самого длинного UCase(Mid(Лист1.Cells(i, 13), 1, Sub Private Sub списке по смыслу формы start upmc-black сделать эту функцию = False If и переходим по что бы поискikki ссылок на другие
списка на другом название департамента, указав двигать его по. русскийЦитатаalex1210 написал: значнеия lt)) Then s Worksheet_SelectionChange(ByVal Target As если ввести букву position на CenterScreen): Посмотрите этот пример:
поиска в выпадающем Len(Target.Offset(0, 1)) = вкладке «Исходный текст». начинался с первых: простыми способами -
B. Ввод элементов списка в диапазон (на любом листе)
листы лучше избегать листе. где он работает. листу и менятьВсе! Наслаждайтесь!NomStolbDan = ActiveCell.Column
2) Повторный выбор = s & Range) On Error А в поле
gizon Выпадающий список, отфильтрованный списке, в каждой 0 Then Target.Offset(0, Либо одновременно нажимаем
букв, а не нет. или использовать ЛичнуюВ правилах Проверки данных (также Логично, предварительно создать размеры и -Важный нюанс. В качестве + 11Это: НомерСтолбцаСДанными=АктивнаяЯчейка.Столбец+11.
в ячейки не
X(i, 1) & Resume Next If отображались все что: Доброго времени суток. по введенным буквам
ячейке.
- 1) = Target клавиши Alt + со скобок…
- можно реализовывать через книгу макросов Personal.xlsx
- как и Условного список департаментов организации режиме ввода, когда
источника данных для Если активировать ячейку работает, если что «~» ‘формирует по
- Target.Count > 1
- есть на буквуПрошу, подсказать, как Могу скорректировать его
Pelena
Else Target.End(xlToRight).Offset(0, 1) F11. Копируем кодasd192 ComboBox, обработку нажатий или Надстройки. форматирования) нельзя впрямую и позволить пользователю единственное, что можно списка может выступать в столбце А
то выбрал выбрать сочетанию букв в Then Exit Sub Аэпорт, Ателье и в выпадающем списке работу, я автор: Здравствуйте. = Target End
(только вставьте свои: Вроде как то, клавиш, перезаполнение спискаЕсли нет желания присваивать указать ссылку на лишь выбирать значения — выбирать из и динамический именованный тогда: НомерСтолбцаСДанными=СтолбецА+11=1+11=12=столбец№12=столбец L.
еще раз
начале текста Next If Not Intersect(Target, тд. при наборе в этого примера.Посмотрите это Готовое If Target.ClearContents Application.EnableEvents параметры).Private Sub Worksheet_Change(ByVal что вам нужно и т.п. имя диапазону в
диапазоны другого листа из этого списка. него данные. Переключение диапазон, например прайс-лист.Активируем ячейку столбца3) Как я i ListBox2.List =
Range(«A2:A3000»)) Is NothingМотя нём названия города,
Uchimata решение = True End Target As Range) (ближе к концугеморрой еще тот.
- файле Источник.xlsx, то (см. Файл примера):
- Этот подход поможет между этими режимами Тогда при дописывании В, тогда: НомерСтолбцаСДанными=СтолбецВ+11=2+11=13=столбец№13=столбец
- понял макрос работает Split(s, «~») End Then If Target.Value
- : А что мешает появлялись соответствующие результаты,:Farvater
If End Sub Dim lReply As видео)проще так: формулу нужно изменитьПусть ячейки, которые должны ускорить процесс ввода происходит с помощью новых товаров к М и т.д…. на все ячейки, Sub Private Sub <> «» Then: предварительно выполнить сортировку
дело в том,mc-black: Pelena, К сожалениюЧтобы выбранные значения показывались Long If Target.Cells.Count
http://www.planetaexcel.ru/tip.php?aid=34
1) иметь отсортированный на =ДВССЫЛ(«[Источник.xlsx]лист1!$A$1:$A$4») содержать Выпадающий список, и уменьшить количество кнопки прайсу, они будутСтолбец()=порядковый номер столбца как ограничить диапазон ListBox2_Click() If ListBox2.ListIndex Me.TextBox1.Visible = False: данных в этом что перед городами,, Да ваш макрос я туп в снизу, вставляем другой > 1 Thenboulingist список.СОВЕТ: размещены на листе опечаток.Режим Конструктора (Design Mode) автоматически добавляться к начиная от левого выдающих значений, если = -1 Then
Me.ListBox1.Visible = False: списке?
поселками и прочими очень хорош!если можно Excel. Не понимаю код обработчика.Private Sub Exit Sub If: Супер ссылка!!! сейчас2) при большомЕсли на листе Пример,Выпадающий список можно создатьна вкладке
выпадающему списку. Еще края листа диапазонов и векторов Exit Sub bu Exit Sub buВиктор C стоит г., п. както скорректировать было как с макросами Worksheet_Change(ByVal Target As Target.Address = «$C$2″
просматриваю всё. Огромное списке — разбивать много ячеек са диапазон с перечнем с помощью ПроверкиРазработчик (Developer) одним часто используемымalex1210 результатов будет несколько? = True ActiveCell.Value = True With: ничего не мешает и т.д., а бы прекрасно.нельзя ли работать. Range) On Error Then If IsEmpty(Target) спасибо!!!
excel2.ru
как в сделать выпадающий список с функцией поиска?
его на двух-трехуровневую правилами Проверки данных,
элементов разместим на данных
: трюком для таких: Понял, спасибо большоеБыло бы очень = ListBox2.Value Me.TextBox2.Visible Me.TextBox1 .Top = это так к список очень большой. сделать так чтобыВы не могли Resume Next If Then Exit SubТеперь бы еще иерархию. соответственно, работать то можно использовать другом листе (наили с помощью элементаЕсли эта кнопка нажата, списков является созданиеgling круто = False Me.ListBox2.Visible Target.Top .Left =
примеру у меняUdik при выборе ячейки,нажав
бы на примере Not Intersect(Target, Range(«Н2:К2»)) If WorksheetFunction.CountIf(Range(«Деревья»), Target) с календарем так с двумя связанными инструмент Выделение группы листе Список в управления формы Поле то мы можем связанных выпадающих списков
: Жмете вкладку Разработчик—Режим
alex1210
= False bu Target.Left .Height = 10 слов на: Вы хотите автодополнение, на кнопку таб
моей таблице написать Is Nothing And = 0 Then
же разобраться… списками — выбирать ячеек (Главная/ Найти файле примера).
со списком (см.
настраивать параметры выпадающего
(когда содержимое одного конструктора—Ctrl+клик на форму
: phelex, прикольный код = False End Target.Height .Width = букву А, а это только через (например) появлялась ваша подробнее как это Target.Cells.Count = 1 lReply = MsgBox(«Добавить
Под выпадающим списком понимается сначала регион, а и выделить/ ВыделениеДля создания выпадающего списка, статью Выпадающий (раскрывающийся) списка, нажав соседнюю списка меняется в ЛКМ (левой кнопкойalex1210
Sub Target.Width .Text = есть очень большие макросы.
форма.И выбрав нужное делать. Then Application.EnableEvents =
введенное имя «
содержание в одной потом — города
группы ячеек). Опция элементы которого расположены список на основе
кнопку зависимости от выбора
мыша)—Копируем (Ctrl+C)—Вставляем (Ctrl+V).: А если база
gling Target.Value .Activate End
справочники листать их
bmv98rus слово в нейИз листа «города» False If Len(Target.Offset(1, & _ Target ячейке нескольких значений.
из этого региона. Проверка данных этого на другом листе, элемента управления формы).
Свойства (Properties) в другом). Возможно есть и на другой странице,: Для столбца А
With With Me.ListBox1 не всегда удобно: Использовать VBA и нажав enter это
мне нужно переносить 0)) = 0 & » в Когда пользователь щелкаетboulingist инструмента позволяет выделить можно использовать два
В этой статье создадим, которая откроет окноЭтот способ представляет собой другой вариант, но например лист2 с и В разные
.Top = Target.Top и не быстро Combobox. Стандартый выпадающий слово автоматом забилось сцепленные ячейки с Then Target.Offset(1, 0)
выпадающий список?», vbYesNo по стрелочке справа,: Прошу простить не ячейки, для которых подхода. Один основан Выпадающий список с со списком всех вставку на лист
я делаю так. первого столбца.. что списки, Box используются .Left = Target.Left
Виктор C список таким функционалом
бы в ячейку. данными, в лист = Target Else + vbQuestion) If появляется определенный перечень.
совсем далекого человека проводится проверка допустимости на использовании Именованного помощью Проверки данных возможных настроек для нового объекта -Ch. надо изменить?
те же. Private + Target.Width .Clear: вопрос снят нашел не обладает.mc-black «данные», начиная со Target.End(xlDown).Offset(1, 0) = lReply = vbYes Можно выбрать конкретное. в делах компьютерных… данных (заданная с диапазона, другой – (Данные/ Работа с выделенного объекта: элемента управления «поле: Спасибо Вам за
gling Sub TextBox1_Change() Dim End With bu тут способ №4gizon
: Вот, немного переделано
K9 и до Target End If Then Range(«Деревья»).Cells(Range(«Деревья»).Rows.Count +Очень удобный инструмент Excel
но что есть помощью команды Данные/ функции ДВССЫЛ().
CyberForum.ru
Выпадающий список в Excel с помощью инструментов или макросов
данными/ Проверка данных)Самые нужные и полезные со списком» с исчерпывающий ответ.: Если много разных X, i, txt = False Me.TextBox1.Visible
gling: Спасибо, поищу вОкно поиска появляется K1300, что бы Target.ClearContents Application.EnableEvents = 1, 1) = для проверки введенных комбобокс, и есть Работа с данными/Используем именованный диапазон
Создание раскрывающегося списка
с типом данных свойства, которые можно последующей привязкой егоphelex списков, тогда лучше
As String, lt, = True Me.ListBox1.Visible: Здравствуйте. А комбобокс инете примеры.
- по Ctrl+J, закрывается выпадал у меня
- True End If Target End If данных. Повысить комфорт ли пошаговая инструкция
- Проверка данных). ПриСоздадим Именованный диапазон Список_элементов, Список. и нужно настроить:
к диапазонам на: gling, больше спасибо
так. Переменную назвал
Выпадающий список в Excel с подстановкой данных
s As String = True Else не устраивает? ИлиНе думаю, что при любом конечном этот список с End Sub End If End
- работы с данными как реализовать задумочку выборе переключателя Всех содержащий перечень элементов
- Выпадающий список можно сформироватьListFillRange листе. Для этого: за ваши ответы. НомерСтолбцаДанных (NomStolbDan), чтоб If Len(TextBox1.Text) = Me.TextBox1.Visible = False выпадающих списков много? подойдет combobox, ведь выборе или просто поиском.Чтобы выбираемые значения отображались If End Sub
- позволяют возможности выпадающих мою? будут выделены все выпадающего списка (ячейки по разному.- диапазон ячеек,В Excel 2007/2010 откройтеУточните пожалуйста, а
понятно было что 0 Or bu Me.ListBox1.Visible = False
Если списков много у меня много
по Esc.
Уже 2 неделю в одной ячейке,Сохраняем, установив тип файла
списков: подстановка данных,ikki такие ячейки. ПриA1:A4Самым простым способом создания откуда берутся данные вкладку
- возможно так сделать менять. Then Exit Sub End If End то можно тот
- ячеек, в которыхUchimata пытаюсь с разными разделенные любым знаком «с поддержкой макросов».
- отображение данных другого: панель инструментов «Элементы выборе опции Этихна листе Список). Выпадающего списка является для списка. ВыделитьРазработчик (Developer)
- взаимозависимые списки?Private Sub TextBox1_Change() txt = TextBox1.Text Sub Private Sub же комбобокс, но заполняется город, поищу: Да!Это гениально!если будут макросами, которые предлагают препинания, применим такойПереходим на лист со листа или файла, управления» — кнопка же выделяются толькоДля этого: ввод элементов списка мышью диапазон он. В более раннихЧто для этого Dim X, i, lt = Len(TextBox1.Text) TextBox1_Change() Dim X, с макросом по макрос. вопросы буду обращаться!Спасибо люди, по разным модуль. списком. Вкладка «Разработчик» наличие функции поиска «Поле со списком» те ячейки, длявыделяем непосредственно в поле не даст, надо
- версиях — панель требуется?
- txt As String, If ActiveCell.Column = i, txt As событию активации ячейки.bmv98rus Вам большое!! формулам, все неPrivate Sub Worksheet_Change(ByVal
— «Код» - и зависимости.у которых установлены теА1:А4 Источник инструмента Проверка
просто вписать его инструментовСпасибо
Выпадающий список в Excel с данными с другого листа/файла
lt, s As 1 Then X String, lt, s А уж коли: Эта «штуковина» должнаmc-black работает. Либо текс Target As Range) «Макросы». Сочетание клавишПуть: меню «Данные» -меня
- же правила проверки, данных.
- руками с клавиатурыФормы (Forms)balzaminka
String, NomStolbDan As = Лист1.Columns(12).SpecialCells(2).Value For As String If использовать макрос то появится, когда вы: Сделал так, что бокс в однойOn Error Resume для быстрого вызова инструмент «Проверка данных»
Как сделать зависимые выпадающие списки
пошаговой — нет.
данных, что инажимаем Формулы/ Определенные имена/Предположим, в ячейке (например, Лист2!A1:A5)через меню: Добрый день! Long If Len(TextBox1.Text) i = 1
- Len(TextBox1.Text) = 0 и формирование списка попадаете в определенную
- будет брать текст ячейке предлагают, а Next – Alt + — вкладка «Параметры».
- но примерно так: для активной ячейки. Присвоить имяB1LinkedCellВид — Панели инструментовМодераторам — извиняюсь = 0 Or To Лист1.Cells(Rows.Count, 12).End(xlUp).Row Or bu Then можно ему доверить, ячейку и при из колонки на
Выбор нескольких значений из выпадающего списка Excel
мне то нужноIf Not Intersect(Target, F8. Выбираем нужное Тип данных –0) изучить основы
- Примечаниев поле Имя вводимнеобходимо создать выпадающий- связанная ячейка, — Формы (View за свою невнимательность, bu Then Exit ‘If InStr(1, UCase(Лист1.Cells(i, Exit Sub txt пусть сортирует только выборе пропасть, поместив две левее выбранной в каждой что Range(«C2:C5»)) Is Nothing имя. Нажимаем «Выполнить». «Список». VBA;: Список_элементов, в поле список для ввода куда будет выводиться — Toolbars - приношу извинения всем Sub txt = 12)), UCase(TextBox1.Value)) > = TextBox1.Text lt
- соответствующие первым буквам. в эту ячейку ячейки. То есть бы выпадал это And Target.Cells.Count =Когда мы введем вВвести значения, из которых1) изучить свойстваЕсли выпадающий список Область выбираем Книга; единиц измерений. Выделим выбранный из списка Forms) за свои ошибки… TextBox1.Text lt = 0 Then s = Len(TextBox1.Text) X Подобные темы уже результат.
- в колонке C список с поиском. 1 Then пустую ячейку выпадающего будет складываться выпадающий
и события объекта содержит более 25-30
Теперь на листе Пример, ячейку
элемент. Если этой вкладкиВопрос - как Len(TextBox1.Text) NomStolbDan =
= s &
= Лист1.Columns(12).SpecialCells(2).Value For
были на форуме.
Nic70y
список брать изБуду Вам оченьApplication.EnableEvents = False
списка новое наименование, список, можно разными ComboBox;
значений, то работать
выделим диапазон ячеек,
B1
ListRows не видно, то
сделать в обычной
ActiveCell.Column + 11
X(i, 1) &
i = 1Виктор C: на сайте есть: A, в D признателен.newVal = Target
Выпадающий список с поиском
- появится сообщение: «Добавить способами:2) вставить элемент с ним становится которые будут содержатьи вызовем Проверку
- - количество отображаемых нажмите кнопку таблице выпадающий список X = Лист1.Columns(NomStolbDan).SpecialCells(2).Value «~» ‘формирует по To Лист1.Cells(Rows.Count, 12).End(xlUp).Row
- : gling,не силен вhttp://www.excelworld.ru/board/vba/tricks/find_in_database/9-1-0-27
- из B иЮрий МApplication.Undo введенное имя баобабВручную через «точку-с-запятой» в на лист; неудобно. Выпадающий список Выпадающий список.
данных.
строкОфис — Параметры Excel с контекстным поиском? For i = сочетанию букв в ‘If InStr(1, UCase(Лист1.Cells(i, макросах(( я головойWasilich так далее. Исходный: Добрый день всем
exceltable.com
Выпадающий список в каждой ячейке с функции поиска. (Формулы/Formulas)
oldval = Target в выпадающий список?».
поле «Источник».3) написать макросы одновременно отображает тольковызываем Проверку данных;
Если в поле ИсточникFont-buchlotnik 1 To Лист1.Cells(Rows.Count, любом месте текста 12)), UCase(TextBox1.Value)) > понимаю что формулами: Это как понимать? диапазон задается в любителям Excel !
If Len(oldval) <>Нажмем «Да» и добавитьсяВвести значения заранее. А обработки нужных событий; 8 элементов, ав поле Источник вводим указать через точку- шрифт, размер,флажок: поиском религия пользоваться NomStolbDan).End(xlUp).Row ‘If InStr(1,
If UCase(txt) = 0 Then s не все и В разных столбцах, cmbFind_Enter()
В связи с 0 And oldval
еще одна строка в качестве источника
4) отладить, протестировать, чтобы увидеть остальные, ссылку на созданное с запятой единицы начертание (курсив, подчеркиваниеОтображать вкладку Разработчик на
не позволяет? UCase(Лист1.Cells(i, NomStolbDan)), UCase(TextBox1.Value)) UCase(Mid(Лист1.Cells(i, 12), 1, = s & не всегда сделать.
что ли?Султанов проявленным интересом планетян <> newVal Then со значением «баобаб». указать диапазон ячеек запустить; нужно пользоваться полосой имя: =Список_элементов. измерения шт;кг;кв.м;куб.м, то
и т.д. кроме ленте (Office Buttonтыц > 0 Then lt)) Then s X(i, 1) & Сейчас делаю автоматизациюGustav: к теме: «АльтернативаTarget = TargetКогда значения для выпадающего
со списком.5) enjoy it!
excelworld.ru
Альтернатива выпадающему списку (форма с поиском)_2 [GIG_ant]
прокрутки, что неПримечание выбор будет ограничен цвета) — Excel Optionsтыцтыц s = s = s & «~» ‘формирует по производственных процессов на: Стесняюсь спросить, аUchimata выпадающему списку (форма & «,» & списка расположены наНазначить имя для диапазонавпрочем — интернет всегда удобно.Если предполагается, что этими четырьмя значениями.ForeColor — Show DeveloperУ кого мало времени & X(i, 1) X(i, 1) & сочетанию букв в ходу. Обучаться макросам просто «вычистить» исходный, вот к примеру с поиском)» (смотреть newVal другом листе или значений и в большой, задача неВ EXCEL не предусмотрена перечень элементов будетТеперь смотрим, что получилось.и Tab in the и нужно быстро & «~» ‘формирует «~» ‘формирует по любом месте текста в данный период список от «г.»
с открытым кодом, тут: ), решилElse в другой книге, поле источник вписать слишком оригинальная, скорее
регулировка размера шрифта дополняться, то можно Выделим ячейкуBackColor Ribbon) ухватить суть - по сочетанию букв
planetaexcel.ru
Выпадающий список с поиском
сочетанию букв в If UCase(txt) = времени не имею и «п.» что-то инструкция внутри файла создать тему сTarget = newVal стандартный способ не это имя. всего, где-то уже Выпадающего списка. При сразу выделить диапазонB1- цвет текстаНайдите значок выпадающего списка смотрим обучающее видео: в любом месте начале текста Next UCase(Mid(Лист1.Cells(i, 12), 1,
свободного времени мешает? Если жеUchimata получившейся в процессе
End If
работает. Решить задачуЛюбой из вариантов даст
есть готовый работающий большом количестве элементов большего размера, например,. При выделении ячейки и фона, соответственно среди элементов управленияКому интересны подробности и
текста If UCase(txt) i Else X lt)) Then sgling окончательный изюм именно: Снова добрый день!Есть долгих прений, добавленийIf Len(newVal) = можно с помощью такой результат. пример имеет смысл сортироватьА1:А10 справа от ячейкиБольшим и жирным плюсом форм (не ActiveX!).
нюансы всех описанных = UCase(Mid(Лист1.Cells(i, NomStolbDan),
= Лист1.Columns(13).SpecialCells(2).Value For = s &: Вот вариант того в них, то вопрос:а можно ли
и исправлений, надстройкой. 0 Then Target.ClearContents функции ДВССЫЛ: она
boulingist список элементов и. Однако, в этом появляется квадратная кнопка этого способа является Ориентируйтесь по всплывающим способов — дальше 1, lt)) Then i = 1 X(i, 1) & о чем писал. можно эти приставки вместо выпадающего списка
Данная надстройка предоставляетApplication.EnableEvents = True сформирует правильную ссылкуНеобходимо сделать раскрывающийся список: я правильно понимаю, использовать дополнительную классификацию
случае Выпадающий список со стрелкой для возможность быстрого перехода подсказкам - по тексту.
s = s To Лист1.Cells(Rows.Count, 13).End(xlUp).Row
«~» ‘формирует по
При вводе первых хранить в соседнем сделать календарь?
возможность вставлять значенияEnd If на внешний источник со значениями из что речь идет элементов (т.е. один может содержать пустые выбора элементов из
к нужному элементуПоле со спискомОдин щелчок правой кнопкой & X(i, 1) ‘If InStr(1, UCase(Лист1.Cells(i, сочетанию букв в букв предлагается вариант. столбце и подтягиватьв интернете нашел
из ранее созданныхEnd Sub информации.
динамического диапазона. Если об excel? выпадающий список разбить строки. выпадающего списка. в списке при:
мыши по пустой & «~» ‘формирует 12)), UCase(TextBox1.Value)) > начале текста Next Но лучше когда их в место очень хороший вариант списков в текущуюНе забываем менять диапазоныДелаем активной ячейку, куда вносятся изменения вikki
на 2 иИзбавиться от пустых строкНедостатки вводе первых буквЩелкните по значку ячейке под столбцом по сочетанию букв
0 Then s i ListBox1.List = список отсортирован,близкие по вставки уже послеhttp://bourabai.kz/einf/excel/5_4.htm
ячейку листа. Запуск на «свои». Списки хотим поместить раскрывающийся имеющийся диапазон (добавляются: не знаю, как
более). и учесть новыеэтого подхода: элементы с клавиатуры(!), чего
и нарисуйте небольшой
с данными, команда в начале текста = s & Split(s, «~») End
CyberForum.ru
Поиск по названию города в выпадающем списке (Формулы/Formulas)
значениям будут рядом выбора из списка.
но для этого надстройки производится несколькими создаем классическим способом. список. или удаляются данные), Вы, а яНапример, чтобы эффективно работать элементы перечня позволяет списка легко потерять нет у всех горизонтальный прямоугольник -
контекстного меню Next i ListBox1.List X(i, 1) & Sub Private Sub
в раскрывающемся списке.Wasilich нужно скачивать Элемент способами: 1) Сочетанием А всю остальную
Открываем параметры проверки данных. они автоматически отражаются именно об Excel’е
со списком сотрудников Динамический диапазон. Для (например, удалив строку остальных способов. Приятным будущий список.Выбрать из раскрывающегося списка
= Split(s, «~») «~» ‘формирует по ListBox1_Click() If ListBox1.ListIndexВиктор C: не получится. Быстрей управления Календарь. клавиш CTRL+SHIFT+R 2) работу будут делать
В поле «Источник» в раскрывающемся списке.
толкую
насчитывающем более 300 этого при создании или столбец, содержащие моментом, также, является
Щелкните по нарисованному списку(Choose from drop-down list) End Sub сочетанию букв в = -1 Then: gling, я типа всего придется использоватьМне это нельзя ДаблКликом (можно отключить макросы. вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).Выделяем диапазон для выпадающегоправда, «панель инструментов» сотрудников, то его
Имени Список_элементов в ячейку возможность настройки визуального правой кнопкой мышиили нажать сочетаниеalex1210
любом месте текста Exit Sub bu того уже сделал форму. Ну типа
делать,т.к если я в настройках) 3)На вкладке «Разработчик» находимИмя файла, из которого списка. В главном — это для следует сначала отсортировать поле Диапазон необходимо
B1 представления (цветов, шрифтов
и выберите команду
клавиш: Не получается данные If UCase(txt) = = True ActiveCell.Value
с помощью элемента так, хотя возможны
передам этот файл Нажатием на строку
инструмент «Вставить» – берется информация для меню находим инструмент версий 2003 и в алфавитном порядке. записать формулу =СМЕЩ(Список!$A$1;;;СЧЁТЗ(Список!$A:$A))); не удобно вводить и т.д.)Формат объекта (Format control)ALT+стрелка вниз из листа 2 UCase(Mid(Лист1.Cells(i, 13), 1, = ListBox1.Value Me.TextBox1.Visible ActiveX разные варианты.
тому у кого меню «Поиск в «ActiveX». Здесь нам списка, заключено в «Форматировать как таблицу». старше. Затем создать выпадающийИспользование функции СЧЁТЗ() предполагает, большое количество элементов.При использовании этого способа,. В появившемся диалоговом
. Способ не работает, брать.Подскажите что в lt)) Then s = False Me.ListBox1.Visibleglingbmv98rus
excelworld.ru
Выпадающий список с возможностью поиска внутри списка
этого элемента не выпадающем списке», находящейся нужна кнопка «Поле квадратные скобки. ЭтотОткроются стили. Выбираем любой.для 2007/2010 - список, содержащий буквы что заполнение диапазона Подход годится для также возможно указывать окне задайте
если ячейку и коде надо изменить = s & = False bu: Посмотрите еще вариант.
: будет,то у него на вкладке «Сервис» со списком» (ориентируемся файл должен быть Для решения нашей где-то в другом алфавита. Второй выпадающий ячеек ( маленьких (3-5 значений)
в качествеФормировать список по диапазону столбец с данными
gling X(i, 1) & = False End Для работы нужноWasilich не получится использовать в 2003 Excel на всплывающие подсказки). открыт. Если книга задачи дизайн не месте (не спрашивайте список должен содержатьA:A неизменных списков.ListFillRange- выделите ячейки отделяет хотя бы
: Вместо Лист1 напишите «~» ‘формирует по Sub Dim bu активировать ячейку в, календарь. и на вкладкеЩелкаем по значку – с нужными значениями имеет значения. Наличие меня — где? только те фамилии,
), который содержит элементы,Преимуществоне только одномерные с наименованиями товаров, одна пустая строка имя листа с сочетанию букв в As Boolean Private столбце А. Писал
А форму тоВопрос:можно ли сделать «Надстройки» в 2007. становится активным «Режим находится в другой
заголовка (шапки) важно. — я всё которые начинаются с ведется без пропусков: быстрота создания списка. диапазоны. Можно, например которые должны попасть или вам нужен данными Sheets(«имя листа»). начале текста Next Sub ComboBox2_Change() End не я, где зачем? CB на то же самое Так же в конструктора». Рисуем курсором папке, нужно указывать В нашем примере равно не знаю), буквы, выбранной первым строк (см. файлЭлементы для выпадающего списка задать диапазон из в список товар, который ещеalex1210
i End If Sub Private Sub то слямзил, сейчас лист. Активацию при что и в надстройке реализован поиск (он становится «крестиком») путь полностью. это ячейка А1 но аналогично. списком. Для решения примера, лист Динамический можно разместить в
двух столбцов иСвязь с ячейкой ни разу не: Разобрался)))) ListBox1.List = Split(s,
Worksheet_SelectionChange(ByVal Target As уже не вспомню. выбору ячеки с http://bourabai.kz/einf/excel/5_4.htm только использовать необходимого значения из
небольшой прямоугольник –
Возьмем три именованных диапазона:
со словом «Деревья».
ещё раз: в такой задачи может
диапазон). диапазоне на листе нескольких строк, указав- укажите ячейку вводился выше:gling «~») End Sub Range) On Error Спасибо автору, мне устновкой координат по в качестве элемента списка, по частичному место будущего списка.Это обязательное условие. Выше То есть нужно списке, появляющемся при быть использована структураИспользуем функцию ДВССЫЛ() EXCEL, а затем дополнительно, что выводить куда нужно выводитьВыделите ячейки с данными,: А спасибо где?Виктор C Resume Next If очень понравилось по ячеке, ну и например LDDate?Подразумеваю что совпадению с критериемЖмем «Свойства» – открывается описано, как сделать выбрать стиль таблицы использовании «проверки данных», Связанный список илиАльтернативным способом ссылки на в поле Источник нужно два столбца порядковый номер выбранного которые должны попастьЭх молодежь!: gling, все красиво, Target.Count > 1 этому и сохранил. фильтр CB при можно,но тогда нужно поиска. Код позиционирования перечень настроек. обычный список именованным со строкой заголовка. задумку не реализовать Вложенный связанный список. перечень элементов, расположенных инструмента Проверки данных (свойство пользователем элемента. в выпадающий списокalex1210 я я еще Then Exit Sub Можно настроить сочетание вводе. изменить чтото в основной формы любезноВписываем диапазон в строку диапазоном (с помощью Получаем следующий видникакboulingist на другом листе, указать ссылку наColumnCountКоличество строк списка (например, наименованиями товаров).: Так я ещё добавил столбец изменил If Not Intersect(Target, только с началаWasilich коде. предоставил многоуважаемый Nerv. ListFillRange (руками). Ячейку, «Диспетчера имен»). Помним, диапазона:.: Всем здравствовать желаю! является использование функции этот диапазон.=2). Тогда можно получить- сколько строкЕсли у вас Excel не всё))))))) макрос, теперь получилось Range(«B2:B3000»)) Is Nothing текста ищет и: Так, яж написал:Апострофф Код сортировки (QuickSortNonRecursive) куда будет выводиться что имя неСтавим курсор в ячейку,существуютГоспода и дамы, ДВССЫЛ(). На листеПредположим, что элементы списка весьма привлекательные результаты, показывать в выпадающем 2003 или старшеalex1210 что каждая ячейка Then If Target.Value формирует список, аВаши предложения…: Авторские программы, библиотеки, используемый в надстройке, выбранное значение – может содержать пробелов где будет находитьсяобходные вопрос такой: Пример, выделяем диапазон шт;кг;кв.м;куб.м введены в окупающие все потраченные списке. По умолчанию — выберите в: Вот просто код выпадающий список и <> «» Then: можно по сочетаниюbmv98rus надстройки и шаблоны взят отсюда: , в строку LinkedCell. и знаков препинания. выпадающий список. Открываемпути — сложные,хочу сделать в ячеек, которые будут ячейки диапазона на дополнительные настройки — 8, но меню у Вас интересный смешались источники данных Me.TextBox2.Visible = False: внутри текста. При:Uchimata за что отдельное Для изменения шрифтаСоздадим первый выпадающий список, параметры инструмента «Проверка
муторные, но в excel 2010 что содержать выпадающий список,A1:A4 усилия: можно больше, чегоВставка — Имя - , а почему столбец M и Me.ListBox2.Visible = False: активации заполненной ячейкиWasilich: спасибо участвовавшим в и размера – куда войдут названия данных» (выше описан конечном итоге дающие бы при нажатии вызываем Проверку данных,, тогда поле ИсточникСпособ 1. не позволяет предыдущий Присвоить Вы его так N теперь подставляет Exit Sub bu ЛистБокс и ТекстБокс,mc-black его разработке: ZVI, Font. диапазонов. путь). В поле нужный результат. на ячейку, в в Источнике указываем будет содержать =лист1!$A$1:$A$4Примитивный способ.(Insert — Name - записали? Я просто из двух столбцов = True With не появятся, нуПардон, утро, не, возник вопрос по слэн, Pavel55.Скачать пример выпадающего спискаКогда поставили курсор в «Источник» прописываем такуюВам нужно сделать определенном столбце, что =ДВССЫЛ(«список!A1:A4»).ПреимуществоСпособ 2.После нажатия на Define),
учусь програмировать и и каждая ячейка Me.TextBox2 .Top = это можете настроить дочитал :-) Вашему списку.Нашел небольшойЮрий МПри вводе первых букв поле «Источник», переходим функцию:выбор бы выходил выпадающийНедостаток: наглядность перечня элементовСтандартныйОКесли Excel 2007 хочу понять как стала выпадающей. Объясните Target.Top .Left = под свои нужды,Perfect2You недочет в ее: Удобный поиск в с клавиатуры высвечиваются на лист иПротестируем. Вот наша таблица- забить на список всех городов
: при переименовании листа и простота егоСпособ 3.списком можно пользоваться.
или новее - и что NomStolbDan тупому ))) какие
Target.Left .Height = например на двойной
: Сделал без макросов. появлении.
выпадающем списке ВЕРСИЯ подходящие элементы. И
выделяем попеременно нужные со списком на
это дело россии. (впринципе, я
– формула перестает модификации. Подход годитсяЭлемент управления
Чтобы вместо порядкового номера откройте вкладку = ActiveCell.Column +
переменные нужно менять Target.Height .Width = клик очищать ячейкуНа листе Лист1При выборе ячейки
12.1 (надстройка для это далеко не ячейки. одном листе:или его сделал, но работать. Как это
для редко изменяющихсяСпособ 4.
элемента выводилось егоФормулы (Formulas)
11 в макросе чтоб Target.Width .Text = и отображать Боксы. в ячейку B1 расположенных ~ до
2007) все приятные моментыТеперь создадим второй раскрывающийсяДобавим в таблицу новоепойти обходными путями есть существенный минус, можно частично обойти
списков.Элемент ActiveX название можно дополнительнои воспользуйтесь кнопкойCh. например столбец А Target.Value .Activate End Экспериментируйте. вводится условие. Выпадающий 100 строки форма[GIG_ant] данного инструмента. Здесь список. В нем значение «елка». (если Вы готовы, там нет строки см. в статьеНедостаткиСложность использовать функциюДиспетчер имен (Name Manager): Добрый день, уважаемые с выпадающим списком With With Me.ListBox2Виктор C список отображает только появляется на экранЮрий М можно настраивать визуальное должны отражаться теТеперь удалим значение «береза». кшн). поиска. А сделал Определяем имя листа.
: если добавляются новыенизкаяИНДЕКС (INDEX), затем форумчане. В рамках
A брал переменные .Top = Target.Top: gling, круто вообще!!! соответствующее условию или
но соответственно ее: Удобный поиск в
представление информации, указывать слова, которые соответствуют
Осуществить задуманное нам помогла
boulingist вот что: наВвод элементов списка в
элементы, то приходитсясредняя, которая умеет выводитьСоздать данной темы у только с столбца .Left = Target.Left буду побывать адаптировать, все, если ячейка разположение постоянно меняется выпадающем списке ВЕРСИЯ
в качестве источника выбранному в первом «умная таблица», которая: Конечно же надо листе 2 в диапазон ячеек, находящегося вручную изменять ссылкувысокая содержимое нужной по. Введите имя (можно меня давно есть L. Столбец В + Target.Width .Clear сразу вопрос а пуста. Проверяет весь на экране.А когда 12.1 (файл Excel сразу два столбца. списке названию. Если легка «расширяется», меняется. попытаться сделать!!! Ща свободном столбце записал в другой книге на диапазон. Правда,Возможность настройки шрифта, цвета
счету ячейки из любое, но обязательно
нерешенный вопрос. А брал переменные только End With bu если одном листе столбец A на выбираешь ячейку со открытый код) [
Farvater «Деревья», то «граб»,
Теперь сделаем так, чтобы бы только разобраться… все города, присвоилЕсли необходимо перенести диапазон в качестве источника
и т.д. диапазона: без пробелов и
именно: в приложенных в столбце M = False Me.TextBox2.Visible
много таких выпадающих листе Лист2. Так
строкой 100+ тоGIG_ant: Здравствуйте. «дуб» и т.д. можно было вводитьikki уникальное имя,в пункте с элементами выпадающего
можно определить сразунетЭтот способ частично напоминает
начать с буквы!) файлах реализован поиск и тд. В
= True Me.ListBox2.Visible списков нужно вставить что, возможно, при
и вовсе пропадает]
Стоит задача сделать
planetaexcel.ru
Выпадающий список с контекстным поиском (Формулы/Formulas)
Вводим в поле новые значения прямо
: вот, нашлось: тынц ОБЛАСТЬ указал ЛИСТ1, списка в другую более широкий диапазон,
нет предыдущий. Основное отличие для выделенного диапазона с выпадающем списком.
моей БОЛЬШОЙ таблице = True Else в мою таблицу
ооочень большом числе
с экрана,видимо открывается
excelworld.ru
Выпадающий список в ячейке листа
Видео
Uchimata таблицу в которой «Источник» функцию вида в ячейку с
не скачивал, не скопировал ДИАПОЗОН, сохранил, книгу (например, в например,
Способ 1. Примитивный
да в том, что (например Если копировать код хочу разместить около Me.TextBox2.Visible = False с переменными как городов и формул вне его видимости.: Здравствуйте!В интренете нашел будет функция поиска =ДВССЫЛ(E3). E3 – этим списком. И проверял, но, судя перешел на лист1, книгу Источник.xlsx), тоA1:A100Количество отображаемых строк на лист добавляется
Способ 2. Стандартный
- Товары из файлов-примеров возникает 15 выпадающих списка.Заранее Me.ListBox2.Visible = False
- указать источники в в столбце CВопрос:как закрепить ее очень здоровскую вещь в выпадающем списке. ячейка с именем данные автоматически добавлялись по описанию - данные, проверка данных, нужно сделать следующее:. Но, тогда выпадающийвсегда 8 не элемент управления,). Нажмите ошибка на отсутствие благодарен. извините за End If End прилагаемом файле это на листе Лист2 местоположения так ,чтобы «Выпадающий список сТо есть имеется первого диапазона. в диапазон. то, что Вам список, и вставил
- в книге Источник.xlsx создайте список может содержатьлюбое а элемент ActiveXОК Textbox1 и Listbox1. настойчивость Sub Private Sub я как понял может тормозить. она например окрывалась поиском» ,но вот пункт города вБывает, когда из раскрывающегосяСформируем именованный диапазон. Путь: надо. диапозон). необходимый перечень элементов; пустые строки (если,
Быстрый поиск элемента по»Поле со списком».
В иных подобных
phelex TextBox2_Change() Dim X, UCase(Лист1.Cells(i, 12))На листе Лист2 все время по незадача.Он представлен как таблице, а на списка необходимо выбрать «Формулы» — «ДиспетчерboulingistПроблема в том,в книге Источник.xlsx диапазону например, часть элементов первым буквамиз раскрывающегося набораВыделите ячейки (можно сразу темах ответ звучал,: Друг очень крутое
Способ 3. Элемент управления
i, txt Asgling в ячейке B1 центру вне зависимости надстройка.Тоесть для того другом листе перечислены сразу несколько элементов. имен» — «Создать».
- : Да задумка именно что необходимый город ячеек содержащему перечень была удалена илинет под кнопкой несколько), в которых что нужно их решение. Как раз String, lt, s: Да это ссылка число удовлетворяющих условию, в каком месте чтобы заработал сначала все города. Нужно Рассмотрим пути реализации Вводим уникальное название такая! скачивал, но теперь найти сложно. элементов присвойте Имя, список только чтонетВставить (Insert) хотите получить выпадающий
- создать или скопировать искал. As String If на столбец где в столбце С листа я нахожусь? нужно загрузить книгу,
при вводе в задачи. диапазона – ОК. не разобрался как - Как сделать что например СписокВнеш; был создан). Чтобыдас вкладки список и выберите
- в своем файле.А можно его Len(TextBox2.Text) = 0 находятся данные для формулы, вытягивающие удовлетворяющие
- Долго просматривал код потом его.Причем тот каждой ячейку подСоздаем стандартный список сСоздаем раскрывающийся список в
- добавлять данные… Но бы в этомоткройте книгу, в которой пустые строки исчезлиНеобходимость использования дополнительной функцииРазработчик (Developer) в меню (на Но ведь Ваши
на множественный выбор Or bu Then списка.
условию значения. Если ,возможно вот здесь кто его сделал столбцом «города» раскрывать помощью инструмента «Проверка любой ячейке. Как спасибо.. Тема какраз списке появилась строка предполагается разместить ячейки
Способ 4. Элемент ActiveX
необходимо сохранить файл.ИНДЕКС: вкладке) примеры работают без подточить? Типо: Exit Sub txtВиктор C условие слабое, формул нужно помимо данных запоролил этот xla список с городами, данных». Добавляем в
это сделать, уже та что мне поиска, при наборе с выпадающим списком;Второй недостаток: диапазон источниканетМеханизм добавления тот жеДанные — Проверка (Data
них, либо ониСтолбец 1 Столбец = TextBox2.Text lt: хочется сделать красиво может не хватить функций добавить еще файл.Можно ли … созданный на другом исходный код листа известно. Источник – нужна!!! в которой напр.выделите нужный диапазон ячеек, должен располагаться нада — выбираем объект — Validation) скрыты? И в 2 = Len(TextBox2.Text) X а VBA я
— Вам решать: чтото,касающееся ее расположения? сделать этот макрос листе. готовый макрос. Как имя диапазона: =деревья.Сейчас по колдовал : Е (выпадают вызовите инструмент Проверка том же листе,
нет из списка и. Из выпадающего списка
- таком случае какВыбор 1 Выбор = Лист1.Columns(13).SpecialCells(2).Value For не знаю думал сколько их тамPrivate Sub UserForm_Initialize() для определенной книги.ЧтобыТ.к. городов много, это делать, описано
- Снимаем галочки на вкладках с это надстройкой… все города на данных, в поле что и выпадающий
- Возможность создания связанных выпадающих рисуем его наТип данных (Allow)
- их скопировать из 1 i = 1 исправлю оставить.
- Me.Move ActiveWindow.PointsToScreenPixelsX(ActiveCell.Left), ActiveWindow.PointsToScreenPixelsY(ActiveCell.Top), я смог передавать нужно в списке выше. С его «Сообщение для ввода»,
в принципе штука Е), ЕК (всегорода Источник укажите =ДВССЫЛ(«[Источник.xlsx]лист1!СписокВнеш»); список, т.к. для списков листе. А вотвыберите вариант файлов примеров?Выбор 1 Выбор To Лист1.Cells(Rows.Count, 13).End(xlUp).RowComboBox1 на ComboBox2;Переделал немного. Ссылка ActiveCell.Width * 64
один этот файл сделать поиск по помощью справа от «Сообщение об ошибке». хорошая, но как на ЕК) иПри работе с перечнем правил Проверки данных нельзянет дальше начинаются серьезныеСписок (List)gling 2 ‘If InStr(1, UCase(Лист1.Cells(i,TextBox1 на TextBox2; на столбец A 48Очень большая и у получателя
Итоговая сравнительная таблица всех способов
первым буквам, или выпадающего списка будут | Если этого не оказалось не совсем | так далее. элементов, расположенным в | использовать ссылки нада | |
отличия от предыдущего | и введите в | : Цитатаgling написал: | Выбор 2 Выбор | |
13)), UCase(TextBox2.Value)) >Range(«A2:A3000»)) на Range(«B2:B3000»)); | листа Лист2 осталась | просьба помочь… | он тоже работал. | |
по похожим значениям. | добавляться выбранные значения.Private | сделать, Excel не | ||
то , чтоЭт вообще возможно? | другой книге, файл | другие листы или | нет | |
способа. строчку | Писал не я, | 3 | 0 Then s | |
поменял столбец 12 только в динамическом | Всегда,как чтото спрашиваю,тут | Если у кого | Третий день ищу, |
planetaexcel.ru
Sub Worksheet_Change(ByVal Target
Как сделать в выпадающем списке поиск по первым буквам |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Функция автозавершения Excel позволяет легко вводить один и тот же текст в несколько ячеек. Используя автозавершение, введите несколько первых букв вашей записи в ячейку, и Excel автоматически завершит ее на основе других записей, которые вы уже сделали в столбце. В дополнение к уменьшению количества текста, который необходимо набирать, эта функция гарантирует, что ваши записи будут внесены правильно и согласованно.
Рассмотрим, как это работает. Предположим, вы вводите информацию о продукте в столбец. Один продукт называется «сахар-песок». Первый раз, когда вы вводите Сахар-песок в ячейку, Excel запоминает эту запись. Позже, когда вы начнете набирать слово Сахар в этом столбце, Excel распознает слово по нескольким первым буквам и завершит его ввод за вас. Просто нажмите Enter, и все готово.
Автозавершение также изменяет регистр букв автоматически. Если начать ввод со слова сахар (со строчной буквой «с») во второй записи, Excel сделает букву «с» прописной в соответствии с предыдущей записью в столбце.
Если столбец содержит несколько записей, которые соответствуют первым нескольким символам, Excel не отобразит предложение по автоматическому завершению, пока новая запись не будет соответствовать одной из старых однозначным образом. Например, если столбец также содержит продукт под названием «сахар-рафинад», автозавершение не будет реализовано, пока вы не введете либо первую букву слова «песок», либо первую букву слова «рафинад».
Вы также можете получить доступ к ориентированной на использование мыши версии автозавершения, щелкнув правой кнопкой мыши на ячейке и выбрав в контекстном меню пункт Выбрать из раскрывающегося списка. Excel отобразит список, в котором содержатся все записи в текущем столбце. Остается просто выбрать ту, которую вы хотите (рис. 32.1).
Вы даже можете получить доступ к списку с клавиатуры: нажмите Shift+F10 для отображения контекстного меню, а затем нажмите клавишу К (горячую клавишу для команды Выбрать из раскрывающегося списка). Используйте кнопки со стрелками, чтобы сделать свой выбор, и нажмите Enter.
Имейте в виду, что функция автозавершения работает только в пределах смежных столбцов ячеек. Если у вас есть, например, пустая строка, автозавершение будет анализировать только содержимое ячеек под пустой строкой. Если функция автозавершения покажется вам отвлекающей, ее можно отключить в разделе Дополнительно диалогового окна Параметры Excel (выберите Файл ► Параметры). Флажок Автозавершение значений ячеек находится в области Параметры правки.
Я собираюсь вам рассказать о фантастически полезном и эффектном приёме. Это одна из самых интересных вещей, которую мне доводилось видеть в Excel. Кроме того, она достаточно легко реализуется. Если вы разберётесь, как она работает, то вы сразу узнаете об Excel необычно много. Я постараюсь рассказать всё максимально подробно, последовательно и внятно.
Выпадающий список с контекстным поиском
Итак, речь пойдёт о выпадающем списке (так называемый combo box), в который встроена возможность динамического поиска по подстроке, которую пользователь вводит с клавиатуры. Посмотрите пример, в котором мы имеем топ 300 крупнейших городов России. На анимированной иллюстрации видно, как мы динамически сужаем список выбора, вводя подстроку «кр» или «ниж», экономя огромное количество времени. Более того, список меняется после ввода каждого нового символа! Выглядит чрезвычайно привлекательно и профессионально, не так ли? Давайте разбираться, как это устроено.
Файл примера
Скачать
Пошаговая инструкция
Предварительные замечания
В файле примера выпадающий список с поиском реализован сразу в двух вариантах: для обычного диапазона (лист Range) и для умной таблицы (лист Table). Мы будим эти варианты обсуждать одновременно, отмечая их различия.
Шаг 1. Готовим таблицу для списка
Подготовьте таблицу с четырьмя колонками: Город (или то, что вам нужно), Статус, Индекс, Фильтр. Заполните столбец Город значениями. В остальных трёх колонках будут формулы, которые мы обсудим ниже. Я всем рекомендую использовать умную таблицу, так как это значительно проще.
Шаг 2. Формулы для столбца Статус
На примере ячейки F2 рассмотрим формулу, аналогичную для всего столбца Статус (столбец F). Из F2 формулу можно протягивать вниз до конца, а в случае умной таблицы Excel это сделает за вас. Это также относится ко всем формулам, которые мы будем обсуждать в этой статье.
$B$2 — ячейка, с которой будет связан выпадающий список (добавляется на шаге 6). Что значит связано? Всё, что вы введёте в выпадающий список, тут же отразится в ячейке B2.
Формула ПОИСК вернёт ошибку, если содержимое B2 не найдено в $E2. ЕОШИБКА перехватит ошибку и вернёт ИСТИНА, если действительно была ошибка, и — ЛОЖЬ, если строка таки была найдена. Функция НЕ делает из истины ложь и наоборот (инверсирует результат). Таким образом, мы получим в этом столбце ИСТИНА, если подстрока найдена в текущем городе, и наоборот. Обратите внимание, что пустая подстрока содержится в любой строке, поэтому все ячейки столбца Статус имеют значения ИСТИНА, когда мы не ввели ещё ничего в B2.
Обычный диапазон | Умная таблица |
=НЕ( ЕОШИБКА( ПОИСК( $B$2; $E2) ) )или =NOT( ISERROR( SEARCH( $B$2; $E2) ) ) |
=НЕ( ЕОШИБКА( ПОИСК( $B$2; [@Город]) ) )или =NOT( ISERROR( SEARCH( $B$2; [@Город]) ) )[@Город] — на языке структурных формул умных таблиц это ссылка на ячейку столбца Город в той же строке, в которой находится сама формула. Поскольку ссылка идёт внутри таблицы, то имя самой таблицы в формуле можно не использовать. В остальном всё — тоже самое. |
Шаг 3. Формула для столбца Индекс
Если B2 содержит подстроку поиска, то в столбце Статус не все ячейки примут значение ИСТИНА. Статус ИСТИНА будет только там, в чьи названия городов входит соответствующая подстрока. А в столбце Индекс мы рассчитываем номер по порядку для всех строк, которые содержат искомую подстроку. Например, на рисунке ниже B2 содержит «ни», что заставляет столбец Статус быть истинным у строк с городами Нижний Новгород, Калининград, Магнитогорск и т.д., а в столбце Индекс мы начинаем считать факты срабатываний в F: Нижний Новгород — первое срабатывание, Калининград — второе и так далее.
Функция ЕСЛИ отсекает все значения в F, которые не равны ИСТИНА. Функция СЧЁТЕСЛИ подсчитывает количество значений ИСТИНА в F.
Обычный диапазон | Умная таблица |
=ЕСЛИ( $F2; СЧЁТЕСЛИ( $F$2:$F2; ИСТИНА ); «»)или =IF( $F2; COUNTIF( $F$2:$F2; TRUE ); «») |
=ЕСЛИ( [@Статус]; СЧЁТЕСЛИ( $F$2:[@Статус]; ИСТИНА ); «»)или =IF( [@Статус]; COUNTIF( $F$2:[@Статус]; TRUE ); «») |
Обратите внимание, что диапазон условия в СЧЁТЕСЛИ введен скользящий — вторая координата не закреплена — и во время протягивания она растёт пропорционально таблице. За счёт этого трюка мы получаем механизм подсчёта значения ИСТИНА. Например, 6-я строка будет подсчитывать ИСТИНУ по диапазону $F$2:$F6 (там одно значение — от Нижнего Новгорода), а 41-я строка будет подсчитывать ИСТИНУ уже по диапазону $F$2:$F41 (а там уже 2 значения — от Нижнего Новгорода и от Калининграда). Вот суть механизма. Это полезный приём, который стоит запомнить.
Шаг 4. Формула для столбца Фильтр
Теперь наша задача, опираясь на столбец Индекс, сформировать в столбце H отфильтрованный список городов, который необходимо показывать в выпадающем списке.
Обычный диапазон | Умная таблица |
=ЕСЛИОШИБКА( ИНДЕКС( стлГород; ПОИСКПОЗ( ЧСТРОК($G$2:$G2); стлИндекс; 0) ); «»)или =IFERROR( INDEX( стлГород; MATCH( ROWS($G$2:$G2); стлИндекс; 0) ); «» )Обратите внимание на динамический именованный диапазон стлГород и стлИндекс, которые мы вынуждены создавать для случая диапазона, чтобы придать решению должный уровень универсальности. Техника, по которой созданы эти именованные диапазоны разобрана тут. |
=ЕСЛИОШИБКА( ИНДЕКС( [Город]; ПОИСКПОЗ( ЧСТРОК($G$2:[@Индекс]); [Индекс]; 0) ); «»)или =IFERROR( INDEX( [Город]; MATCH( ROWS($G$2:[@Индекс]); [Индекс]; 0) ); «» )Не путайте: [Индекс] — ссылка на весь столбец, а [@Индекс] — ссылка на ячейку из этого столбца в текущей строке. Никакие дополнительные именованные диапазоны нам создавать нет никакой необходимости, так как мы пользуемся встроенным в умные таблицы сервисом при ссылке на столбцы. |
Формула ЧСТРОК($G$2:$G2) используется для генерации последовательных номеров от 1 (для второй строки) до N (в строке N+1), равному количеству найденных подстрок. Просто генерируется диапазон соответствующего размера, а формула ЧСТРОК возвращает его высоту в строках.
Формула ПОИСКПОЗ ищет номер реальной строки, содержащий соответствующий индекс. Например, в столбце Фильтр мы видим Магнитогорск на третьей позиции, но в реальности он взят из E45, так как в G45 стоит цифра 3, которую мы и нашли через ПОИСКПОЗ. То есть ПОИСКПОЗ сказал нам, что Магнитогорск находится в 45-й строке, а извлекли мы его оттуда уже при помощи формулы ИНДЕКС.
Если же при извлечении возникает ошибка (текущая строка находится ниже строки N+1), то формула возвращает пустую строку. За это отвечает ЕСЛИОШИБКА.
Шаг 5. Создание именованных диапазонов
Обычный диапазон | Умная таблица |
Именованный диапазон стлГород =Range!$E$2:ИНДЕКС( Range!$E:$E; СЧЁТЗ(Range!$E:$E) )или =Range!$E$2:INDEX( Range!$E:$E; COUNTA(Range!$E:$E) )Именованный диапазон стлИндекс =Range!$G$2:ИНДЕКС( Range!$G:$G; СЧЁТЗ(Range!$G:$G) )или =Range!$G$2:INDEX( Range!$G:$G; COUNTA(Range!$G:$G) )Именованный диапазон стлФильтр =Range!$H$2:ИНДЕКС( Range!$H:$H; СЧЁТЗ(Range!$H:$H) )или =Range!$H$2:INDEX( Range!$H:$H; COUNTA(Range!$H:$H) )Именованный диапазон DDL_Range =Range!$H$2:ИНДЕКС( стлФильтр; МАКС(стлИндекс) )или =Range!$H$2:INDEX( стлФильтр; MAX(стлИндекс) ) |
Именованный диапазон DDL_Table =Table!$H$2:ИНДЕКС( tblData[Фильтр]; МАКС(tblData[Индекс]) )или =Table!$H$2:INDEX( tblData[Фильтр]; MAX(tblData[Индекс]) )tblData — имя умной таблицы Именованный диапазон DDL_Fake =DDL_TableИменованный диапазон DDL_Fake, как видите, напрямую ссылается на DDL_Table и нужен для того, чтобы обмануть элемент управления ComboBox21, так как он не умеет работать с ИД, ссылающимися на умную таблицу. |
DDL_Range и DDL_Table это диапазоны, которые формируются на базе значений столбца Фильтр без пустых строк. Эти ИД указываются в свойствах ListFillRange выпадающих списков (DDL_Table — через DDL_Fake).
Шаг 6. Вставляем Combo box на лист
На ленте Разработчик в группе Элементы управления через кнопку Вставить выберите элемент управления ActiveX Поле со списком и вставьте его на лист.
Далее:
-
Нажмите кнопку Режим конструктора (предварительно убедитесь, что вставленный элемент управления активен)
-
Нажмите кнопку Свойства на ленте
-
Отредактируйте свойства в соответствии с рисунком:
- Поле AutoWordSelect должно быть равно False
- Поле LinkedCell сделайте равным B2
- Поле ListFillRange должно быть либо DDL_Range для обычного диапазона (лист Range), либо DDL_Fake для умной таблицы (лист Table).
- Поле MatchEntry = 2 — fmMatchEntryNone
Шаг 7. Модификация события Change для элементов Поле со списком
Ну и изюминка нашего приёма, то, что заставляет Поле со списком показывать нам обновленный список выбора после каждого изменения строки ввода, — событие Change этого элемента управления, которое переприсваивает свойство ListFillRange и вызывает событие раскрытия списка DropDown.
Вот и всё!
P.S. К сожалению, не я придумал такую крутую штуку. Это сделал индийский товарищ Sumit Bansal, решение которого я лишь немного оптимизировал (исправил VBA событие — у него оно почему-то было привязано к GotFocus, что всё портило, и сократил формулы).
Читайте также:
-
Создание выпадающего списка в ячейке
-
Каскадные выпадающие списки
-
Универсальные динамические каскадные выпадающие списки без VBA!
-
Каскадные комбинированные списки
-
Динамические каскадные списки на основе сводных таблиц
Для раскрывающегося списка со многими значениями найти подходящее значение из списка — непростая задача. Ранее мы представили метод автоматического заполнения выпадающего списка при вводе первой буквы. В дополнение к функции автозаполнения вы также можете сделать раскрывающийся список доступным для поиска, чтобы повысить эффективность поиска подходящего значения в раскрывающемся списке. Чтобы сделать раскрывающийся список доступным для поиска, вы можете шаг за шагом следовать приведенным ниже методам.
Создайте раскрывающийся список с возможностью поиска в Excel
Легко создавайте раскрывающийся список с возможностью поиска с помощью замечательного инструмента
Дополнительные руководства для раскрывающегося списка …
Создайте раскрывающийся список с возможностью поиска в Excel
Предположим, у вас есть список названий стран в столбце A, как показано на снимке экрана ниже, и теперь вы хотите использовать их в качестве исходных данных для раскрывающихся списков поиска. Для этого вы можете сделать следующее.
Вам нужно вставить поле со списком вместо раскрывающегося списка проверки данных на листе.
1. Если Застройщик вкладка не отображается на ленте, вы можете включить Застройщик вкладку следующим образом.
1). В Excel 2010 или более поздних версиях щелкните Файл > Опции. И в Параметры Excel диалоговое окно, нажмите Настроить ленту на левой панели. Перейдите к списку «Настроить ленту», установите флажок Застройщик поле, а затем щелкните OK кнопка. Смотрите скриншот:
2). В Excel 2007 щелкните Офисы кнопка> Параметры Excel. В Параметры Excel диалоговое окно, нажмите Популярное на левой панели проверьте Показать вкладку разработчика на ленте поле и, наконец, щелкните OK кнопку.
2. После показа Застройщик вкладку нажмите Застройщик > Вставить > Поле со списком.
3. Нарисуйте поле со списком на листе, щелкните его правой кнопкой мыши и выберите Предложения из контекстного меню.
4. в Предложения диалоговое окно, вам необходимо:
1). Выбрать Ложь в AutoWordSelect поле;
2). Укажите ячейку в Связанная ячейка поле. В этом случае мы вводим A12;
3). Выбрать 2-fmMatchEntryNone в MatchEntry поле;
4). Тип Раскрывающийся список в ListFillRange поле;
5). Закрой Предложения диалоговое окно. Смотрите скриншот:
5. Теперь выключите режим дизайна, нажав Застройщик > Режим проектирования.
6. Выберите пустую ячейку, например C2, введите приведенную ниже формулу и нажмите Enter. Они перетаскивают его дескриптор автозаполнения в ячейку C9, чтобы автоматически заполнить ячейки одной и той же формулой. Смотрите скриншот:
=—ISNUMBER(IFERROR(SEARCH($A$12,A2,1),»»))
Заметки:
1. 12 австралийских доллара это ячейка, которую вы указали как Связанная ячейка на шаге 4;
2. Выполнив вышеуказанные шаги, теперь вы можете проверить: введите букву C в поле со списком, и тогда вы увидите, что ячейки формулы, которые ссылаются на ячейки, содержащие символ C, заполнены числом 1.
7. Выберите ячейку D2, введите приведенную ниже формулу и нажмите Enter. Затем перетащите его дескриптор автозаполнения вниз в ячейку D9.
=IF(C2=1,COUNTIF($C$2:C2,1),»»)
8. Выберите ячейку E2, введите приведенную ниже формулу и нажмите Enter. Затем перетащите его дескриптор автозаполнения вниз до E9, чтобы применить ту же формулу.
=IFERROR(INDEX($A$2:$A$9,MATCH(ROWS($D$2:D2),$D$2:$D$9,0)),»»)
9. Теперь вам нужно создать диапазон имен. Пожалуйста, нажмите Формула > Определить имя.
10. в Новое имя диалоговое окно, введите Раскрывающийся список в Имя и фамилия поле, введите приведенную ниже формулу в поле Относится к поле, а затем щелкните OK кнопку.
=$E$2:INDEX($E$2:$E$9,MAX($D$2:$D$9),1)
11. Теперь включите режим дизайна, нажав Застройщик > Режим проектирования. Затем дважды щелкните поле со списком, чтобы открыть Microsoft Visual Basic для приложений окно.
12. Скопируйте и вставьте приведенный ниже код VBA в редактор кода.
Код VBA: сделать выпадающий список доступным для поиска
Private Sub ComboBox1_GotFocus()
ComboBox1.ListFillRange = "DropDownList"
Me.ComboBox1.DropDown
End Sub
13. нажмите другой + Q ключи, чтобы закрыть Microsoft Visual Basic для приложений окно.
Отныне, когда символ вводится в поле со списком, он выполняет нечеткий поиск, а затем перечисляет соответствующие значения в списке.
Внимание: вам необходимо сохранить эту книгу как файл книги Excel с поддержкой макросов, чтобы сохранить код VBA для будущего использования.
Легко создавайте раскрывающийся список с возможностью поиска с помощью замечательного инструмента
Кажется, что описанный выше метод непрост. Вот рекомендую удобную функцию — Раскрывающийся список с возможностью поиска of Kutools for Excel чтобы упростить создание раскрывающегося списка с возможностью поиска в Excel.
Пожалуйста, сделайте следующее, чтобы создать раскрывающийся список с возможностью поиска с функцией раскрывающегося списка с возможностью поиска.
1. Нажмите Кутулс > Раскрывающийся список > Раскрывающийся список с возможностью поиска > Включить раскрывающийся список с возможностью поиска.
2. В дебюте Kutools for Excel диалоговое окно (это диалоговое окно появляется только при первом применении этой функции), нажмите кнопку Да кнопку.
3. Затем в Раскрывающийся список с возможностью поиска диалоговое окно необходимо настроить следующим образом.
3.1). Обращаться к раздел, вы можете указать диапазон диапазона для применения этой функции:
A: Указанный диапазон (ы): Поддержка одного или нескольких раскрывающихся списков;
B: Указанный объем: Поддержка текущего листа, текущей книги или всех книг.
3.2). Опции разделе есть два варианта, вы можете выбрать один из них, оба или ни один из них в соответствии с вашими потребностями:
A: Соответствует только началу слова: Если этот параметр отмечен, отображаются только элементы, начинающиеся с введенного символа, при этом первый отображаемый элемент будет заполнен автоматически; Если этот параметр не отмечен, будут отображаться элементы, содержащие введенный символ;
B: Деликатный случай: Если этот параметр отмечен, отображаются только элементы, соответствующие регистру введенного символа; Если этот параметр не отмечен, элементы, содержащие введенный символ, будут отображаться без учета регистра.
3.3). режим В разделе выберите режим добавления элементов раскрывающегося списка в ячейки.
A: Добавить: Если вы выберете этот переключатель, в ячейку будет разрешено добавлять несколько искомых элементов (включая дубликаты). После добавления первого искомого элемента в ячейку, если вы снова выполните новый поиск в этой ячейке, новый искомый элемент будет добавлен в конец существующего.
В разделе Разделитель текстовое поле, введите разделитель для разделения добавленных элементов;
В разделе Направление текста выберите направление для отображения добавленных элементов в ячейке раскрывающегося списка.
B: Изменить: Если вы выберете эту кнопку-переключатель, добавленный позже элемент перезапишет существующий. Одновременно в ячейке может отображаться только один элемент.
3.3) Нажмите OK.
4. Затем нажмите Кутулс > Раскрывающийся список > Раскрывающийся список с возможностью поиска > Включить раскрывающийся список с возможностью поиска для включения этой функции.
Теперь создан раскрывающийся список с возможностью поиска. При нажатии на ячейку раскрывающегося списка открывается окно списка со всеми перечисленными элементами раскрывающегося списка. Введите символ, и соответствующие элементы будут найдены сразу, и вы можете щелкнуть нужный элемент, чтобы вставить его в эту ячейку.
Если вы выбрали Горизонтально в Направление текста раздел: все добавленные элементы будут отображаться горизонтально в ячейке. См. приведенную ниже демонстрацию:
Если вы выбрали Вертикально в Направление текста раздел: все добавленные элементы будут отображаться вертикально в ячейке. См. приведенную ниже демонстрацию:
Если вы выбрали Изменить переключатель, в ячейке выпадающего списка одновременно может отображаться только один элемент. См. приведенную ниже демонстрацию:
Нажмите, чтобы узнать больше об этой функции.
Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Статьи по теме:
Автозаполнение при вводе текста в раскрывающемся списке Excel
Если у вас есть раскрывающийся список проверки данных с большими значениями, вам нужно прокрутить список вниз только для того, чтобы найти нужное, или введите все слово напрямую в поле списка. Если есть способ разрешить автозаполнение при вводе первой буквы в выпадающем списке, все станет проще. В этом руководстве представлен метод решения проблемы.
Создать раскрывающийся список из другой книги в Excel
Создать раскрывающийся список проверки данных среди листов в книге довольно просто. Но если данные списка, необходимые для проверки данных, находятся в другой книге, что вы будете делать? В этом руководстве вы узнаете, как подробно создать раскрывающийся список из другой книги в Excel.
Создайте раскрывающийся список с возможностью поиска в Excel
Для раскрывающегося списка с многочисленными значениями найти подходящий — непростая задача. Ранее мы ввели метод автоматического заполнения раскрывающегося списка при вводе первой буквы в раскрывающемся списке. Помимо функции автозаполнения, вы также можете сделать раскрывающийся список доступным для поиска для повышения эффективности работы при поиске правильных значений в раскрывающемся списке. Чтобы сделать раскрывающийся список доступным для поиска, попробуйте метод, описанный в этом руководстве.
Автоматическое заполнение других ячеек при выборе значений в раскрывающемся списке Excel
Допустим, вы создали раскрывающийся список на основе значений в диапазоне ячеек B8: B14. При выборе любого значения в раскрывающемся списке необходимо, чтобы соответствующие значения в диапазоне ячеек C8: C14 автоматически заполнялись в выбранной ячейке. Для решения проблемы методы, описанные в этом руководстве, окажут вам услугу.
Дополнительные инструкции для раскрывающегося списка …
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Содержание
- 1 Выпадающий список с контекстным поиском
- 2 Файл примера
-
- 2.0.1 Скачать
-
- 3 Пошаговая инструкция
- 3.1 Предварительные замечания
- 3.2 Шаг 1. Готовим таблицу для списка
- 3.3 Шаг 2. Формулы для столбца Статус
- 3.3.1 =НЕ( ЕОШИБКА( ПОИСК( $B$2; $E2) ) )
- 3.3.1.1 =NOT( ISERROR( SEARCH( $B$2; $E2) ) )
- 3.3.2 =НЕ( ЕОШИБКА( ПОИСК( $B$2; ) ) )
- 3.3.2.1 =NOT( ISERROR( SEARCH( $B$2; ) ) )
- 3.3.1 =НЕ( ЕОШИБКА( ПОИСК( $B$2; $E2) ) )
- 3.4 Шаг 3. Формула для столбца Индекс
- 3.4.1 =ЕСЛИ( $F2; СЧЁТЕСЛИ( $F$2:$F2; ИСТИНА ); «»)
- 3.4.1.1 =IF( $F2; COUNTIF( $F$2:$F2; TRUE ); «»)
- 3.4.2 =ЕСЛИ( ; СЧЁТЕСЛИ( $F$2:; ИСТИНА ); «»)
- 3.4.2.1 =IF( ; COUNTIF( $F$2:; TRUE ); «»)
- 3.4.1 =ЕСЛИ( $F2; СЧЁТЕСЛИ( $F$2:$F2; ИСТИНА ); «»)
- 3.5 Шаг 4. Формула для столбца Фильтр
- 3.5.1 =ЕСЛИОШИБКА( ИНДЕКС( стлГород; ПОИСКПОЗ( ЧСТРОК($G$2:$G2); стлИндекс; 0) ); «»)
- 3.5.1.1 =IFERROR( INDEX( стлГород; MATCH( ROWS($G$2:$G2); стлИндекс; 0) ); «» )
- 3.5.2 =ЕСЛИОШИБКА( ИНДЕКС( ; ПОИСКПОЗ( ЧСТРОК($G$2:); ; 0) ); «»)
- 3.5.2.1 =IFERROR( INDEX( ; MATCH( ROWS($G$2:); ; 0) ); «» )
- 3.5.1 =ЕСЛИОШИБКА( ИНДЕКС( стлГород; ПОИСКПОЗ( ЧСТРОК($G$2:$G2); стлИндекс; 0) ); «»)
- 3.6 Шаг 5. Создание именованных диапазонов
- 3.6.1 =Range!$E$2:ИНДЕКС( Range!$E:$E; СЧЁТЗ(Range!$E:$E) )
- 3.6.1.1 =Range!$E$2:INDEX( Range!$E:$E; COUNTA(Range!$E:$E) )
- 3.6.2 =Range!$G$2:ИНДЕКС( Range!$G:$G; СЧЁТЗ(Range!$G:$G) )
- 3.6.2.1 =Range!$G$2:INDEX( Range!$G:$G; COUNTA(Range!$G:$G) )
- 3.6.3 =Range!$H$2:ИНДЕКС( Range!$H:$H; СЧЁТЗ(Range!$H:$H) )
- 3.6.3.1 =Range!$H$2:INDEX( Range!$H:$H; COUNTA(Range!$H:$H) )
- 3.6.4 =Range!$H$2:ИНДЕКС( стлФильтр; МАКС(стлИндекс) )
- 3.6.4.1 =Range!$H$2:INDEX( стлФильтр; MAX(стлИндекс) )
- 3.6.5 =Table!$H$2:ИНДЕКС( tblData; МАКС(tblData) )
- 3.6.5.1 =Table!$H$2:INDEX( tblData; MAX(tblData) )
- 3.6.6 =DDL_Table
- 3.6.1 =Range!$E$2:ИНДЕКС( Range!$E:$E; СЧЁТЗ(Range!$E:$E) )
- 3.7 Шаг 6. Вставляем Combo box на лист
- 3.8 Шаг 7. Модификация события Change для элементов Поле со списком
- 3.8.1 Вот и всё!
- 3.9 Читайте также:
- 3.9.1 Создание выпадающего списка в ячейке
- 3.9.2 Каскадные выпадающие списки
- 3.9.3 Универсальные динамические каскадные выпадающие списки без VBA!
- 3.9.4 Каскадные комбинированные списки
- 3.9.5 Динамические каскадные списки на основе сводных таблиц
- 4 Немного кода…
- 5 Привет разработчикам
- 6 Идея!
- 7 Пример создания зависимого выпадающего списка в ячейке Excel
- 8 Список категорий и подкатегорий в зависимом выпадающем списке Excel
- 8.1 Зависимый выпадающий список подкатегорий
- 8.2 Рабочая исходная таблица Excel
- 9 1. Имена диапазонов ячеек
- 10 2. Создание раскрывающегося списка для категории
- 10.1 3. Создание зависимого выпадающего списка для подкатегории
- 11 Проверка вводимых значений для подкатегории в зависимом выпадающем списке
- 12 Формирование выпадающего списка
- 12.1 Как добавлять значения в список
Я собираюсь вам рассказать о фантастически полезном и эффектном приёме. Это одна из самых интересных вещей, которую мне доводилось видеть в Excel. Кроме того, она достаточно легко реализуется. Если вы разберётесь, как она работает, то вы сразу узнаете об Excel необычно много. Я постараюсь рассказать всё максимально подробно, последовательно и внятно.
Выпадающий список с контекстным поиском
Итак, речь пойдёт о выпадающем списке (так называемый combo box), в который встроена возможность динамического поиска по подстроке, которую пользователь вводит с клавиатуры. Посмотрите пример, в котором мы имеем топ 300 крупнейших городов России. На анимированной иллюстрации видно, как мы динамически сужаем список выбора, вводя подстроку «кр» или «ниж», экономя огромное количество времени. Более того, список меняется после ввода каждого нового символа! Выглядит чрезвычайно привлекательно и профессионально, не так ли? Давайте разбираться, как это устроено.
Файл примера
Скачать
Пошаговая инструкция
Предварительные замечания
В файле примера выпадающий список с поиском реализован сразу в двух вариантах: для обычного диапазона (лист Range) и для умной таблицы (лист Table). Мы будим эти варианты обсуждать одновременно, отмечая их различия.
Шаг 1. Готовим таблицу для списка
Подготовьте таблицу с четырьмя колонками: Город (или то, что вам нужно), Статус, Индекс, Фильтр. Заполните столбец Город значениями. В остальных трёх колонках будут формулы, которые мы обсудим ниже. Я всем рекомендую использовать умную таблицу, так как это значительно проще.
Шаг 2. Формулы для столбца Статус
На примере ячейки F2 рассмотрим формулу, аналогичную для всего столбца Статус (столбец F). Из F2 формулу можно протягивать вниз до конца, а в случае умной таблицы Excel это сделает за вас. Это также относится ко всем формулам, которые мы будем обсуждать в этой статье.
$B$2 — ячейка, с которой будет связан выпадающий список (добавляется на шаге 6). Что значит связано? Всё, что вы введёте в выпадающий список, тут же отразится в ячейке B2.
Формула ПОИСК вернёт ошибку, если содержимое B2 не найдено в $E2. ЕОШИБКА перехватит ошибку и вернёт ИСТИНА, если действительно была ошибка, и — ЛОЖЬ, если строка таки была найдена. Функция НЕ делает из истины ложь и наоборот (инверсирует результат). Таким образом, мы получим в этом столбце ИСТИНА, если подстрока найдена в текущем городе, и наоборот. Обратите внимание, что пустая подстрока содержится в любой строке, поэтому все ячейки столбца Статус имеют значения ИСТИНА, когда мы не ввели ещё ничего в B2.
Обычный диапазон | Умная таблица |
=НЕ( ЕОШИБКА( ПОИСК( $B$2; $E2) ) )или =NOT( ISERROR( SEARCH( $B$2; $E2) ) ) |
=НЕ( ЕОШИБКА( ПОИСК( $B$2; ) ) )или =NOT( ISERROR( SEARCH( $B$2; ) ) )— на языке структурных формул умных таблиц это ссылка на ячейку столбца Город в той же строке, в которой находится сама формула. Поскольку ссылка идёт внутри таблицы, то имя самой таблицы в формуле можно не использовать. В остальном всё — тоже самое. |
Шаг 3. Формула для столбца Индекс
Если B2 содержит подстроку поиска, то в столбце Статус не все ячейки примут значение ИСТИНА. Статус ИСТИНА будет только там, в чьи названия городов входит соответствующая подстрока. А в столбце Индекс мы рассчитываем номер по порядку для всех строк, которые содержат искомую подстроку. Например, на рисунке ниже B2 содержит «ни», что заставляет столбец Статус быть истинным у строк с городами Нижний Новгород, Калининград, Магнитогорск и т.д., а в столбце Индекс мы начинаем считать факты срабатываний в F: Нижний Новгород — первое срабатывание, Калининград — второе и так далее.
Функция ЕСЛИ отсекает все значения в F, которые не равны ИСТИНА. Функция СЧЁТЕСЛИ подсчитывает количество значений ИСТИНА в F.
Обычный диапазон | Умная таблица |
=ЕСЛИ( $F2; СЧЁТЕСЛИ( $F$2:$F2; ИСТИНА ); «»)или =IF( $F2; COUNTIF( $F$2:$F2; TRUE ); «») |
=ЕСЛИ( ; СЧЁТЕСЛИ( $F$2:; ИСТИНА ); «»)или =IF( ; COUNTIF( $F$2:; TRUE ); «») |
Обратите внимание, что диапазон условия в СЧЁТЕСЛИ введен скользящий — вторая координата не закреплена — и во время протягивания она растёт пропорционально таблице. За счёт этого трюка мы получаем механизм подсчёта значения ИСТИНА. Например, 6-я строка будет подсчитывать ИСТИНУ по диапазону $F$2:$F6 (там одно значение — от Нижнего Новгорода), а 41-я строка будет подсчитывать ИСТИНУ уже по диапазону $F$2:$F41 (а там уже 2 значения — от Нижнего Новгорода и от Калининграда). Вот суть механизма. Это полезный приём, который стоит запомнить.
Шаг 4. Формула для столбца Фильтр
Теперь наша задача, опираясь на столбец Индекс, сформировать в столбце H отфильтрованный список городов, который необходимо показывать в выпадающем списке.
Обычный диапазон | Умная таблица |
=ЕСЛИОШИБКА( ИНДЕКС( стлГород; ПОИСКПОЗ( ЧСТРОК($G$2:$G2); стлИндекс; 0) ); «»)или =IFERROR( INDEX( стлГород; MATCH( ROWS($G$2:$G2); стлИндекс; 0) ); «» )Обратите внимание на динамический именованный диапазон стлГород и стлИндекс, которые мы вынуждены создавать для случая диапазона, чтобы придать решению должный уровень универсальности. Техника, по которой созданы эти именованные диапазоны разобрана тут. |
=ЕСЛИОШИБКА( ИНДЕКС( ; ПОИСКПОЗ( ЧСТРОК($G$2:); ; 0) ); «»)или =IFERROR( INDEX( ; MATCH( ROWS($G$2:); ; 0) ); «» )Не путайте: — ссылка на весь столбец, а — ссылка на ячейку из этого столбца в текущей строке. Никакие дополнительные именованные диапазоны нам создавать нет никакой необходимости, так как мы пользуемся встроенным в умные таблицы сервисом при ссылке на столбцы. |
Формула ЧСТРОК($G$2:$G2) используется для генерации последовательных номеров от 1 (для второй строки) до N (в строке N+1), равному количеству найденных подстрок. Просто генерируется диапазон соответствующего размера, а формула ЧСТРОК возвращает его высоту в строках.
Формула ПОИСКПОЗ ищет номер реальной строки, содержащий соответствующий индекс. Например, в столбце Фильтр мы видим Магнитогорск на третьей позиции, но в реальности он взят из E45, так как в G45 стоит цифра 3, которую мы и нашли через ПОИСКПОЗ. То есть ПОИСКПОЗ сказал нам, что Магнитогорск находится в 45-й строке, а извлекли мы его оттуда уже при помощи формулы ИНДЕКС.
Если же при извлечении возникает ошибка (текущая строка находится ниже строки N+1), то формула возвращает пустую строку. За это отвечает ЕСЛИОШИБКА.
Шаг 5. Создание именованных диапазонов
Обычный диапазон | Умная таблица |
Именованный диапазон стлГород =Range!$E$2:ИНДЕКС( Range!$E:$E; СЧЁТЗ(Range!$E:$E) )или =Range!$E$2:INDEX( Range!$E:$E; COUNTA(Range!$E:$E) )Именованный диапазон стлИндекс =Range!$G$2:ИНДЕКС( Range!$G:$G; СЧЁТЗ(Range!$G:$G) )или =Range!$G$2:INDEX( Range!$G:$G; COUNTA(Range!$G:$G) )Именованный диапазон стлФильтр =Range!$H$2:ИНДЕКС( Range!$H:$H; СЧЁТЗ(Range!$H:$H) )или =Range!$H$2:INDEX( Range!$H:$H; COUNTA(Range!$H:$H) )Именованный диапазон DDL_Range =Range!$H$2:ИНДЕКС( стлФильтр; МАКС(стлИндекс) )или =Range!$H$2:INDEX( стлФильтр; MAX(стлИндекс) ) |
Именованный диапазон DDL_Table =Table!$H$2:ИНДЕКС( tblData; МАКС(tblData) )или =Table!$H$2:INDEX( tblData; MAX(tblData) )tblData — имя умной таблицы Именованный диапазон DDL_Fake =DDL_TableИменованный диапазон DDL_Fake, как видите, напрямую ссылается на DDL_Table и нужен для того, чтобы обмануть элемент управления ComboBox21, так как он не умеет работать с ИД, ссылающимися на умную таблицу. |
DDL_Range и DDL_Table это диапазоны, которые формируются на базе значений столбца Фильтр без пустых строк. Эти ИД указываются в свойствах ListFillRange выпадающих списков (DDL_Table — через DDL_Fake).
Шаг 6. Вставляем Combo box на лист
На ленте Разработчик в группе Элементы управления через кнопку Вставить выберите элемент управления ActiveX Поле со списком и вставьте его на лист.
Далее:
-
Нажмите кнопку Режим конструктора (предварительно убедитесь, что вставленный элемент управления активен)
-
Нажмите кнопку Свойства на ленте
-
Отредактируйте свойства в соответствии с рисунком:
- Поле AutoWordSelect должно быть равно False
- Поле LinkedCell сделайте равным B2
- Поле ListFillRange должно быть либо DDL_Range для обычного диапазона (лист Range), либо DDL_Fake для умной таблицы (лист Table).
- Поле MatchEntry = 2 — fmMatchEntryNone
Шаг 7. Модификация события Change для элементов Поле со списком
Ну и изюминка нашего приёма, то, что заставляет Поле со списком показывать нам обновленный список выбора после каждого изменения строки ввода, — событие Change этого элемента управления, которое переприсваивает свойство ListFillRange и вызывает событие раскрытия списка DropDown.
Вот и всё!
P.S. К сожалению, не я придумал такую крутую штуку. Это сделал индийский товарищ Sumit Bansal, решение которого я лишь немного оптимизировал (исправил VBA событие — у него оно почему-то было привязано к GotFocus, что всё портило, и сократил формулы).
Читайте также:
-
Создание выпадающего списка в ячейке
-
Каскадные выпадающие списки
-
Универсальные динамические каскадные выпадающие списки без VBA!
-
Каскадные комбинированные списки
-
Динамические каскадные списки на основе сводных таблиц
Привет!
В Одессе сильная жара, и меня ждет море. Море работы. Я разработал такой вот выпадающий список с поиском — как в Гугле — для Экселя.
Если ты не знаешь, что такое выпадающие списки, не беда. В Экселе их можно найти по адресу:
Данные → Проверка данных… Выбор значений из списка.
Ты получишь следующий результат. В ячейке с проверкой данных появится стрелка, при нажатии на которую выпадет список возможных значений.
Чего склонен ожидать пользователь от такого списка?
- При вводе любого символа с клавиатуры список сокращается до тех значений, которые отвечают введенному критерию-символу. Это сделать нельзя.
- Ну хотя бы при вводе первого символа, чтобы список прокручивался до слов, начинающихся с той буквы, которую ты ввел. Нет, так сделать тоже нельзя.
Предлагаю решение, которое поможет тебе справляться с большими списками. Решение использует VBA с использованием пользовательской формы. Далее я пошагово расскажу, как у себя настроить то же. Но сперва предлагаю
скачать пример с готовым фильтром
, на базе которого ты можешь настроить свой шаблон.
Немного кода…
Работаем в редакторе VBA. Если ты раньше там не бывал, не бойся. В этом нет ничего страшного!
Нажми + для открытия редактора кода. Интерфейс его весьма приятный, он не менялся, наверное, уже лет 20. Слева нажми правой кнопкой мыши по элементам текущей книги и нажми Insert > Module.
Итак, в обычный модуль добавь следующий код:
Option Explicit Const minW = 170 Const minH = 15 Public NamedRange As String Public LinkedCell As Range Public List As Range Public L As Long Public T As Long Public W As Long Public H As Long Public CodeChange As Boolean Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function DrawMenuBar Lib "user32" ( _ ByVal hwnd As Long) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long Private Const HWND_DESKTOP As Long = 0 Private Const LOGPIXELSY As Long = 90 Private Const LOGPIXELSX As Long = 88 Const TWIPSPERINCH = 1440 Private Declare Function SystemParametersInfo Lib "user32" _ Alias "SystemParametersInfoA" _ (ByVal uAction As Long, _ ByVal uParam As Long, _ lpvParam As Any, _ ByVal fuWinIni As Long) As Long Sub ShowForm() If UserForm1.Caption = "UserForm1" Then _ UserForm1.Show ' show the form End Sub Sub ButtonLaunch() ' Change Range(...) to yours Dim Target As Range On Error Resume Next Set Target = ActiveCell If Intersect(Target, Range("B4:B500")) _ Is Nothing Or Target.Cells.Count > 1 Then Exit Sub End If SetList Call DetectDimentions(Target) Call SetLinkedCell(Target) ShowForm End Sub Sub DetectDimentions(Ran As Range) Dim S As Shape Dim C As Range Dim TwX As Long Dim TwY As Long Dim CorrX As Long Dim CorrY As Long Dim ScrRow As Long Dim ScrCol As Long Dim Cls As Range Dim Ros As Range Dim Zoom As Integer TwX = TwipsPerPixelX TwY = TwipsPerPixelY Set C = Cells(1, 1) Set S = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 1, 1) S.Top = C.Top S.Left = C.Left ' find correction Zoom = ActiveWindow.Zoom ActiveWindow.Zoom = 100 ScrRow = ActiveWindow.ScrollRow ScrCol = ActiveWindow.ScrollColumn If ActiveWindow.ScrollRow > 1 Then Set Cls = Range(Cells(1, 1), Cells(ScrRow - 1, 1)) CorrY = Cls.Height * 20 / TwX End If If ActiveWindow.ScrollColumn > 1 Then Set Ros = Range(Cells(1, 1), Cells(1, ScrCol - 1)) CorrX = Ros.Width * 20 / TwX End If With ActiveWindow L = .PointsToScreenPixelsX(S.Left) + CorrX T = .PointsToScreenPixelsY(S.Top) + CorrY End With ActiveWindow.Zoom = Zoom L = L * TwX / 20 T = T * TwY / 20 With Ran W = .Width If W < minW Then W = minW H = .Height If H < minH Then H = minH End With S.Delete End Sub Sub SetLinkedCell(Target As Range) Set LinkedCell = Target End Sub Sub SetList() NamedRange = "Regions" On Error Resume Next Set List = Range(NamedRange) If Err.Number 0 Then MsgBox "Диапазона не существует =(" End End If End Sub Public Function InList(Find As String, List As Range) InList = Application.Match(Find, List, 0) If IsError(InList) Then InList = False End Function Sub PopulateList(CB As MSForms.ListBox, List As Range, CBval As String) Dim Cel As Range CB.Clear If CBval = "" Or InList(CBval, List) Then For Each Cel In List CB.AddItem Cel Next Cel Else CBval = UCase(CBval) For Each Cel In List If InStr(1, UCase(Cel), CBval) Then _ CB.AddItem Cel Next Cel End If End Sub Sub RemoveCaption(objForm As Object) Dim lStyle As Long Dim hMenu As Long Dim mhWndForm As Long If Val(Application.Version) < 9 Then mhWndForm = FindWindow("ThunderXFrame", objForm.Caption) 'XL97 Else mhWndForm = FindWindow("ThunderDFrame", objForm.Caption) 'XL2000+ End If lStyle = GetWindowLong(mhWndForm, -16) lStyle = lStyle And Not &HC00000 SetWindowLong mhWndForm, -16, lStyle DrawMenuBar mhWndForm End Sub Public Function TwipsPerPixelX() Dim lngDC As Long lngDC = GetDC(HWND_DESKTOP) TwipsPerPixelX = TWIPSPERINCH / GetDeviceCaps(lngDC, LOGPIXELSX) ReleaseDC HWND_DESKTOP, lngDC End Function Public Function TwipsPerPixelY() Dim lngDC As Long lngDC = GetDC(HWND_DESKTOP) TwipsPerPixelY = TWIPSPERINCH / GetDeviceCaps(lngDC, LOGPIXELSY) ReleaseDC HWND_DESKTOP, lngDC End Function
В этом коде найди строку NamedRange = «Regions» и слово Regions замени на свой диапазон. Это может быть адрес диапазона, например «Лист1!A1:A200», это может быть имя диапазона, как в моем случае.
Так же в строке
If Intersect(Target, Range(«B4:B500»))
тебе нужно поставить свой диапазон, в котором требуется создать выпадающие списки. Для этого замени
B4:B500
на адрес своего диапазона. Этот адрес может не содержать имени листа, т.к. всегда используется текущий лист.
Дальше нужно вставить форму с двумя элементами управления: TestBox и ListBox.
Там же в редакторе кода вставляешь форму: Insert > UserForm. И на нее простыми кликами мыши переносишь TestBox и ListBox. Ты их можешь разместить как угодно. При запуске формы мы их разместим правильно.
Теперь пора вставлять код формы. Выдели саму форму и нажми . Это перенесет тебя в окно с кодом самой формы. В это окно вставь код:
Const ListBoxH = 100 Option Explicit Private Sub ListBox1_Change() If ListBox1.ListIndex > -1 Then If ListBox1.Value TextBox1.Value Then CodeChange = True TextBox1.Value = ListBox1.Value End If End If End Sub Sub EndForm() LinkedCell = ListBox1.Value Unload Me End Sub Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) EndForm End Sub Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case 13 EndForm Case 38 If ListBox1.ListIndex = 0 Then TextBox1.SetFocus End Select End Sub Private Sub TextBox1_Change() If CodeChange Then CodeChange = False Else LinkedCell.Value = TextBox1.Value Call PopulateList(UserForm1.ListBox1, List, TextBox1.Value) End If End Sub Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case 18 ListBox1.Value = "" Case 40 If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0 ListBox1.SetFocus End If End Select End Sub Private Sub UserForm_Terminate() If InList(LinkedCell.Value, List) = False Then LinkedCell.Value = "" End If End Sub Private Sub UserForm_Initialize() Call RemoveCaption(Me) End Sub Private Sub UserForm_Activate() With UserForm1 .Top = T .Left = L .Width = W + 4 .Height = H + ListBoxH - 4 End With With ListBox1 .Top = H .Left = 0 .Width = W .Height = ListBoxH End With With TextBox1 .Top = 0 .Left = 0 .Width = W .Height = H + 5 .Value = LinkedCell.Value End With If LinkedCell.Value = "" Then _ Call PopulateList(UserForm1.ListBox1, List, TextBox1.Value) End Sub
Дальше ты почти готов к использованию списков с поиском. Тебе нужно создать сам список, из которого будут выпадать значения. Теперь стань в любую ячейку, которая находится внутри целевого диапазона и нажми + и в списке макросов найди и запусти макрос:
ButtonLaunch.
И еще для удобства пользования ты можешь привязать макрос, который запускает код к кнопке или картинке.
И еще ты можешь заставить код срабатывать автоматически. Для этого в код целевого листа вставь следующее:
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Change Range(...) to yours If Target.Columns.Count > 1 Then Exit Sub If Target.Rows.Count > 1 Then Exit Sub If Intersect(Target, Range("B4:B500")) Is Nothing Then Exit Sub End If SetList Call DetectDimentions(Target) Call SetLinkedCell(Target) ShowForm End Sub
В этом последнем коде так же замени диапазон. В строке
If Intersect(Target, Range(«B4:B500»))
тебе нужно поставить свой диапазон, в котором требуется создать выпадающие списки. Для этого замени
B4:B500
на адрес своего диапазона.
***
Сложно мне было достичь такого результата… Что я только не перепробовал, пока не пришел к такому решению. И оно, разумеется, не идеально…
Привет разработчикам
В Экселе, оказывается, не все так просто, как на самом деле. При разработке данного проекта я пробовал использовать следующие средства:
Элементы ActiveX. Результат: работают они красивее, чем формы, к тому же они самостоятельны (не привязаны к оболочке) и являются частью рабочего пространства т.е. ячеек Экселя. Поэтому связанные списки у меня появлялись прямо в ячейках. Но при работе с ActiveX, оказалось, что они сплошь глючные, иногда неадекватно показывают событие выпадения самого списка. И когда, преодолев все сложности, я дописал код, оказалось, что он работает нестабильно. На более слабой машине, чем моя, Эксель пока последней 2013 версии вылетал каждый раз при попытке создания списка.
Элементы управления формы.
Они, как я узнал на одном из форумов, более приятны в обращении, но оказалось, что выпадающий список форм не обладает всем функционалом, который мне был необходим. Так что это пока отпадает.
Выпадающий список в форме. Это уже ближе. С формой у меня есть отдельная боль — ее очень нелегко разместить в нужном месте экрана, на что ушло процентов 80 всего кода и столько же усилий. Но главное, что выпадающий список в стандартной форме Экселя тоже работал глючно. А именно, при попытке заставить его выпадать, он часто выдавал непредсказуемый результат на экран.
Сочетание элементов управления в форме. Наконец, я пришел к двум связанным элементам формы, которые симулируют один выпадающий список, а именно это простое текстовое поле (TestBox) и простой список(ListBox). Именно этот вариант привел меня к решению.
Решение это мне не нравится до сих пор: уж слишком оно громоздкое и неизящное. Слишком много усилий ради такой простой функции. Что ж, будем искать еще варианты. Но, тем не менее, приведенное выше решение работает стабильно и не приводит к перезагрузке программы (надеюсь, что это так). Поэтому предлагаю тебе адаптировать его.
Идея!
И тут, при написании этой статьи, ко мне пришла идея: а что если использовать смешанную технику для нахождения более изящного решения.
В примере выше, который я как раз закончил делать, ты видишь динамический список, который появляется непосредственно на месте ячейки, которую мы форматируем. Замечу несколько моментов:
- Во-первых, качай пример себе и тестируй, адаптируй, развивай.
- Второе. Как его адаптировать. В коде листа есть обработчик событий, и в нем нужно заменить во второй строке Const DropDownRange = «B4:B500» на свой диапазон. С этим проблем не должно возникнуть. Дальше в модуле есть код, который обрабатывает большинство вещей. В нем ты тоже замени кое-что, а именно в строке Public Const NamedRange = «Regions» поменяй «Regions» на полный адрес диапазона со значениями для проверки. Тут удобнее использовать именованный диапазон, как в моем примере, но можно и прописать полный адрес, например Лист1!А1:А25
- Третье. Данным списком удобно пользоваться. Он работает шустро. Он отвечает на некоторые события: после редактирования текста меняется список, это само собой. Но еще ты можешь после ввода чего-нибудь нажать на стрелки Вниз — Вверх, при этом выделятся значения внутри списка, и потом нажать или ввести выбранное значение. Это, по-моему, совпадает с ожидаемым поведением элементов управления. Тут пока есть небольшая недоработка, которую ты легко заметишь, протестировав пример. А именно если в текстовое поле ничего не введено, то оно не реагирует на нажатие стрелок. Но с этим можно жить, а к тому же, думаю, пытливый ум найдет решение.
- Данный список не проверяет жестко введенный текст в ячейку, но с этим можно легко справиться, например, дополнительно сделав проверку данных по диапазону.
Это решение, по-моему, максимально отвечает поставленной задаче. Тут есть еще простор для улучшений, но начало задано. Смысл работы основывается на нескольких идеях:
Идея первая. Сделай качественную подделку. Можно подделать элементы управления, если их создавать прямо сверху ячейки, которую выделил пользователь.
Идея вторая. Использовать элементы ActiveX и элементы формы Ввиду множества проделанных неудачных опытов, я пришел к выводу, что напрямую добиться результата нельзя. Но можно отдельно использовать элемент со списком ListBox, и элемент поле TextBox, и заставить из совместно работать как ComboBox — выпадающий список. Повторюсь, что напрямую это сделать я не смог — уж очень много глюков обнаружилось. И вот я в решении соединил 2 элемента управления, причем один из них — ActiveX (поле), а второй — элемент формы (список). Это дало более стабильный результат, но при этом изящный и более легковесный, чем решение с пользовательскими формами. К тому же мне повезло найти пример с обработкой нажатия пользователем кнопок (KeyCode) при изменении Поля TextBox. Это дало возможность сделать список более дружелюбным к действиям пользователя.
Идея третья. Что еще можно сделать Еще можно сделать так, чтобы пользователь смог вручную отключать опцию выпадения списка. Дело в том, что это может быть слишком навязчиво и неудобно при форматировании таблицы в целом. Тут оставляю пробел и специально не дорабатываю код: это довольно просто сделать и способов множество, так что оставляю эту работу за тобой.
И еще, разумеется, можно повысить дружелюбность списков, и добавить жесткую проверку данных, которая не даст ошибиться при вводе. Но это потом.
***
Скоро будут выходные, и я хочу все-таки пойти на море. Поэтому закругляюсь.
Зависимый выпадающий список позволяет сделать трюк, который очень часто хвалят пользователи шаблонов Excel. Трюк, который делает работу проще и быстрее. Трюк, благодаря которому ваши формы будут удобны и приятны.
Пример использования зависимого выпадающего списка для создания удобной формы заполнения документов, с помощью которых продавцы заказывали товары. Из всего ассортимента они должны были выбрать те продукты, которые они собирались продать.
Каждый продавец сначала определял товарную группу, а затем конкретный товар из этой группы. Форма должна включать полное имя группы и определенный индекс товара. Поскольку набирать это вручную было бы слишком трудоемким (и раздражающим) занятием, я предложил очень быстрое и простое решение — 2 зависимых выпадающих списка.
Первым был список всех категорий продуктов, второй — список всех продуктов, находящихся в выбранной категории. Поэтому я создал выпадающий список, зависимый от выбора, сделанного в предыдущем списке (здесь вы найдете материал о том, как создать два зависимых раскрывающихся списка).
Тот же самый результат хочет получить пользователь шаблона домашнего бюджета где нужна категория и подкатегория расходов. Пример данных находится на рисунке ниже:
Так, например, если мы выберем категорию Развлечения, то в списке подкатегорий должно быть: Кинотеатр, Театр, Бассейн. Очень быстрое решение, если в своем домашнем бюджете вы хотите проанализировать более подробную информацию.
Список категорий и подкатегорий в зависимом выпадающем списке Excel
Признаюсь, что в предложенном мной варианте домашнего бюджета я ограничиваюсь только категорией, поскольку для меня такого разделения расходов вполне достаточно (название расходов / доходов рассматривается как подкатегория). Однако, если вам нужно разделить их на подкатегории, то метод, который я описываю ниже, будет идеальным. Смело используйте!
А конечный результат выглядит следующим образом:
Зависимый выпадающий список подкатегорий
Для того чтобы этого достичь, необходимо сделать немного другую таблицу данных, чем если бы мы создавали один раскрывающийся список. Таблица должна выглядеть так (диапазон G2:H15):
Рабочая исходная таблица Excel
В эту таблицу необходимо ввести категорию и рядом с ней ее подкатегории. Имя категории должно повторяться столько раз, сколько есть подкатегорий. Очень важно, чтобы данные были отсортированы по столбцу Категория. Это будет чрезвычайно важно, когда позже будем писать формулу.
Можно было бы также использовать таблицы с первого изображения. Разумеется, формулы были бы разными. Однажды даже я нашел в сети такое решение, но оно мне не понравилось, потому что там была фиксированная длина списка: а значит, иногда список содержал пустые поля, а иногда и не отображал все элементы. Конечно, я могу избежать этого ограничения, но признаюсь, что мне больше нравится мое решение, поэтому к тому решению я больше не возвращался.
Ну хорошо. Теперь, по очереди я опишу шаги создания зависимого выпадающего списка.
1. Имена диапазонов ячеек
Это необязательный шаг, без него мы сможем без проблем справиться с этим. Однако мне нравится использовать имена, потому что они значительно облегчают как написание, так и чтение формулы.
Присвоим имена двум диапазонам. Список всех категорий и рабочий список категорий. Это будут диапазоны A3:A5 (список категорий в зеленой таблице на первом изображении) и G3:G15 (список повторяющихся категорий в фиолетовой рабочей таблице).
Для того чтобы назвать список категорий:
- Выберите диапазон A3:A5.
- В поле имени (поле слева от строки формулы) введите название «Категория».
- Подтвердите с помощью клавиши Enter.
Такое же действие совершите для диапазона рабочего списка категорий G3:G15, который вы можете вызвать «Рабочий_Список». Этот диапазон мы будем использовать в формуле.
2. Создание раскрывающегося списка для категории
Это будет просто:
- Выберите ячейку, в которую вы хотите поместить список. В моем случае это A12.
- В меню «ДАННЫЕ» выберите инструмент «Проверка данных». Появится окно «Проверка вводимых значений».
- В качестве типа данных выберите «Список».
- В качестве источника введите: =Категория (рисунок ниже).
- Подтвердите с помощью OK.
Проверка вводимых значений – Категория.
Результат следующий:
Раскрывающийся список для категории.
3. Создание зависимого выпадающего списка для подкатегории
Сейчас будет весело. Создавать списки мы умеем — только что это сделали для категории. Только единственный вопрос: «Как сказать Excelю выбрать только те значения, которые предназначены для конкретной категории?» Как вы, наверное, догадываетесь, я буду использовать здесь рабочую таблицу и, конечно же, формулы.
Начнем с того, что мы уже умеем, то есть с создания раскрывающегося списка в ячейке B12. Поэтому выберите эту ячейку и нажмите «Данные» / «Проверка данных», а в качестве типа данных — «Список».
В источник списка введите следующую формулу:
Вид окна «Проверка вводимых значений»:
Проверка вводимых значений для подкатегории в зависимом выпадающем списке
Как видите, весь трюк зависимого списка состоит в использовании функции СМЕЩ. Ну хорошо, почти весь. Помогают ей функции ПОИСКПОЗ и СЧЕТЕСЛИ. Функция СМЕЩ позволяет динамически определять диапазоны. Вначале мы определяем ячейку, от которой должен начинаться сдвиг диапазона, а в последующих аргументах определяем его размеры.
В нашем примере диапазон будет перемещаться по столбцу Подкатегория в рабочей таблице (G2:H15). Перемещение начнем от ячейки H2, которая также является первым аргументом нашей функции. В формуле ячейку H2 записали как абсолютную ссылку, потому что предполагаю, что мы будем использовать раскрывающийся список во многих ячейках.
Поскольку рабочая таблица отсортирована по Категории, то диапазон, который должен быть источником для раскрывающегося списка, будет начинаться там, где впервые встречается выбранная категория. Например, для категории Питание мы хотим отобразить диапазон H6:H11, для Транспорта — диапазон H12: H15 и т. д. Обратите внимание, что все время мы перемещаемся по столбцу H, а единственное, что изменяется, это начало диапазона и его высота (то есть количество элементов в списке).
Начало диапазона будет перемещено относительно ячейки H2 на такое количество ячеек вниз (по числу), сколько составляет номер позиции первой встречающейся категории в столбце Категория. Проще будет понять на примере: диапазон для категории Питание перемещен на 4 ячейки вниз относительно ячейки H2 (начинается с 4 ячейки от H2). В 4-ой ячейке столбца Подкатегория (не включая заголовок, так как речь идет о диапазоне с именем Рабочий_Список), есть слово Питание (его первое появление). Мы используем этот факт собственно для определения начала диапазона. Послужит нам для этого функция ПОИСКПОЗ (введенная в качестве второго аргумента функции СМЕЩ):
Высоту диапазона определяет функция СЧЕТЕСЛИ. Она считает все встречающиеся повторения в категории, то есть слово Питание. Сколько раз встречается это слово, сколько и будет позиций в нашем диапазоне. Количество позиций в диапазоне — это его высота. Вот функция:
Конечно же, обе функции уже включены в функцию СМЕЩ, которая описана выше. Кроме того, обратите внимание, что как в функции ПОИСКПОЗ, так и в СЧЕТЕСЛИ, есть ссылка на диапазон названный Рабочий_Список. Как я уже упоминал ранее, не обязательно использовать имена диапазонов, можно просто ввести $H3: $H15. Однако использование имен диапазонов в формуле делает ее проще и легко читаемой.
Вот и все:
Скачать пример зависимого выпадающего списка в Excel
Одна формула, ну не такая уж и простая, но облегчающая работу и защищает от ошибок при вводе данных!
Читайте также: Связанные выпадающие списки и формула массива в Excel
Два варианта использования этого трюка я уже представил. Интересно, как вы его будете использовать?
Выпадающие списки в Microsoft Excel незаменимы при создании объемных таблиц, работе с базами данных. В чем же конкретно заключается удобство этого инструмента?
• Если при заполнении таблицы некоторые данные периодически повторяются, нет необходимости каждый раз вбивать вручную постоянное значение — например, наименование товара, месяц, ФИО сотрудника. Достаточно один раз закрепить повторяющийся параметр в списке.
• Ячейки списка защищены от введения посторонних значений, что снижает вероятность допустить ошибку в работе.
• Таблица, оформленная таким образом, выглядит аккуратно.
В статье я расскажу, как в Экселе сделать выпадающий список в ячейке и как с ним работать.
Формирование выпадающего списка
Один из распространенных примеров использования выпадающих списков – интернет-магазины, в которых вся продукция распределена по категориям – такая структура облегчает пользователям поиск по сайту.
Рассмотрим наглядно:
Все товары, перечисленные в таблице, нужно отнести к категории «Одежда». Чтобы создать выпадающий список для этого перечня, потребуется выполнить следующие действия:
• Выделить любую ячейку, в которой будет создан список.
• Зайти на вкладку «Данные», в раздел «Проверка данных».
• В открывшемся окне выбрать вкладку «Параметры», а в перечне «Тип данных» вариант – «Список».
• В появившейся строке необходимо указать все имеющиеся наименования списка. Сделать это можно двумя способами: выделить мышкой диапазон данных в таблице (в примере – ячейки А1-А7) или вбить названия вручную через точку с запятой.
• Выделить все ячейки с нужными значениями, и, щелкнув правой кнопкой мыши, выбрать в контекстном меню пункт «Присвоить имя».
• В строке «Имя» указать наименование списка – в данном случае, «Одежда».
• Выделить ячейку, в которой создан список, и вписать созданное имя в строку «Источник» со знаком «=» вначале.
Итоговый результат выглядит так. Это самый простой вариант выпадающего списка. В зависимости от версии Excel, действий может быть больше или меньше, но в целом, инструкция универсальна для любой программы.
Как добавлять значения в список
Иногда возникает необходимость дополнить уже имеющийся перечень. В раскрывающемся списке все новые пункты отображаются автоматически при добавлении. Однако чтобы связать диапазон ячеек с добавленным вновь элементом, список требуется оформить в виде таблицы. Для этого нужно выделить диапазон значений, найти на вкладке «Главная» пункт «Форматировать как таблицу» и выбрать любой понравившийся стиль, например:
В дальнейшем фиксированный список будет пополняться каждый раз при подстановке нового значения: