Выпадающий список с быстрым поиском
Классический выпадающий список в ячейке листа 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
Выпадающий список в 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 с подстановкой данных
Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.
- Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
- Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
- Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:
Протестируем. Вот наша таблица со списком на одном листе:
Добавим в таблицу новое значение «елка».
Теперь удалим значение «береза».
Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.
Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.
- Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
- Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
- Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
- Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
- Сохраняем, установив тип файла «с поддержкой макросов».
- Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».
Private Sub Worksheet_Change(ByVal Target As Range) Dim lReply As Long If Target.Cells.Count > 1 Then Exit Sub If Target.Address = "$C$2" Then If IsEmpty(Target) Then Exit Sub If WorksheetFunction.CountIf(Range("Деревья"), Target) = 0 Then lReply = MsgBox("Добавить введенное имя " & _ Target & " в выпадающий список?", vbYesNo + vbQuestion) If lReply = vbYes Then Range("Деревья").Cells(Range("Деревья").Rows.Count + 1, 1) = Target End If End If End If End Sub
Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».
Нажмем «Да» и добавиться еще одна строка со значением «баобаб».
Выпадающий список в Excel с данными с другого листа/файла
Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.
- Делаем активной ячейку, куда хотим поместить раскрывающийся список.
- Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).
Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.
Как сделать зависимые выпадающие списки
Возьмем три именованных диапазона:
Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.
- Создадим первый выпадающий список, куда войдут названия диапазонов.
- Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
- Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
- Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
- Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
- Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.
- На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
- Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
- Жмем «Свойства» – открывается перечень настроек.
- Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.
Выбор нескольких значений из выпадающего списка Excel
Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Е2:Е9")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(0, 1)) = 0 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("Н2:К2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset(1, 0)) = 0 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & "," & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.
Выпадающий список с поиском
Скачать пример выпадающего списка
При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.
Я собираюсь вам рассказать о фантастически полезном и эффектном приёме. Это одна из самых интересных вещей, которую мне доводилось видеть в 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. Кроме того, она достаточно легко реализуется. Если вы разберётесь, как она работает, то вы сразу узнаете об 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), то формула возвращает пустую строку. За это отвечает ЕСЛИОШИБКА .
Выпадающий список с быстрым поиском
Классический выпадающий список в ячейке листа 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 + стрелка вниз , чтобы развернуть выпадающий список без мыши.
В принципе, можно было бы и не продолжать, но недавно Microsoft выкатила обновление вычислительного движка Excel, который теперь поддерживает динамические массивы и имеет специальные функции для работы с ними. Большинству пользователей они станут доступны в ближайшие месяцы, но даже если пока этих возможностей в вашем Excel нет — грех не показать как элементарно с их помощью решается наша задача.
Всё, что мы делали на Шагах 1-3 заменяется одной(!) формулой, где новая функция ФИЛЬТР (FILTER) отбирает из исходного диапазона A2:A251 только те фильмы, которые содержат заданную подстроку.
А дальше останется при создании выпадающего списка указать в качестве источника первую ячейку диапазона отобранных фильмов (C2) и добавить к ней знак #, чтобы получить ссылку на весь динамический массив:
И всё. Никаких именованных диапазонов и медленных СМЕЩ, никаких танцев с дополнительными столбцами и формулами. Песня!
Выпадающий список с поиском в Excel
При работе в программе Microsoft Excel в таблицах с повторяющимися данными, очень удобно использовать выпадающий список. С его помощью можно просто выбирать нужные параметры из сформированного меню. Давайте выясним, как сделать раскрывающийся список различными способами.
Создание дополнительного списка
Самым удобным, и одновременно наиболее функциональным способом создания выпадающего списка, является метод, основанный на построении отдельного списка данных.
Прежде всего, делаем таблицу-заготовку, где собираемся использовать выпадающее меню, а также делаем отдельным списком данные, которые в будущем включим в это меню. Эти данные можно размещать как на этом же листе документа, так и на другом, если вы не хотите, чтобы обе таблице располагались визуально вместе.
Выделяем данные, которые планируем занести в раскрывающийся список. Кликаем правой кнопкой мыши, и в контекстном меню выбираем пункт «Присвоить имя…».
Открывается форма создания имени. В поле «Имя» вписываем любое удобное наименование, по которому будем узнавать данный список. Но, это наименование должно начинаться обязательно с буквы. Можно также вписать примечание, но это не обязательно. Жмем на кнопку «OK».
Переходим во вкладку «Данные» программы Microsoft Excel. Выделяем область таблицы, где собираемся применять выпадающий список. Жмем на кнопку «Проверка данных», расположенную на Ленте.
Открывается окно проверки вводимых значений. Во вкладке «Параметры» в поле «Тип данных» выбираем параметр «Список». В поле «Источник» ставим знак равно, и сразу без пробелов пишем имя списка, которое присвоили ему выше. Жмем на кнопку «OK».
Выпадающий список готов. Теперь, при нажатии на кнопку у каждой ячейки указанного диапазона будет появляться список параметров, среди которых можно выбрать любой для добавления в ячейку.
Создание выпадающего списка с помощью инструментов разработчика
Второй способ предполагает создание выпадающего списка с помощью инструментов разработчика, а именно с использованием ActiveX. По умолчанию, функции инструментов разработчика отсутствуют, поэтому нам, прежде всего, нужно будет их включить. Для этого, переходим во вкладку «Файл» программы Excel, а затем кликаем по надписи «Параметры».
В открывшемся окне переходим в подраздел «Настройка ленты», и ставим флажок напротив значения «Разработчик». Жмем на кнопку «OK».
После этого, на ленте появляется вкладка с названием «Разработчик», куда мы и перемещаемся. Чертим в Microsoft Excel список, который должен стать выпадающим меню. Затем, кликаем на Ленте на значок «Вставить», и среди появившихся элементов в группе «Элемент ActiveX» выбираем «Поле со списком».
Кликаем по месту, где должна быть ячейка со списком. Как видите, форма списка появилась.
Затем мы перемещаемся в «Режим конструктора». Жмем на кнопку «Свойства элемента управления».
Открывается окно свойств элемента управления. В графе «ListFillRange» вручную через двоеточие прописываем диапазон ячеек таблицы, данные которой будут формировать пункты выпадающего списка.
Далее, кликаем по ячейке, и в контекстном меню последовательно переходим по пунктам «Объект ComboBox» и «Edit».
Выпадающий список в Microsoft Excel готов.
Чтобы сделать и другие ячейки с выпадающим списком, просто становимся на нижний правый край готовой ячейки, нажимаем кнопку мыши, и протягиваем вниз.
Связанные списки
Также, в программе Excel можно создавать связанные выпадающие списки. Это такие списки, когда при выборе одного значения из списка, в другой графе предлагается выбрать соответствующие ему параметры. Например, при выборе в списке продуктов картофеля, предлагается выбрать как меры измерения килограммы и граммы, а при выборе масла растительного — литры и миллилитры.
Прежде всего, подготовим таблицу, где будут располагаться выпадающие списки, и отдельно сделаем списки с наименованием продуктов и мер измерения.
Присваиваем каждому из списков именованный диапазон, как это мы уже делали ранее с обычными выпадающими списками.
В первой ячейке создаём список точно таким же образом, как делали это ранее, через проверку данных.
Во второй ячейке тоже запускаем окно проверки данных, но в графе «Источник» вводим функцию «=ДВССЫЛ» и адрес первой ячейки. Например, =ДВССЫЛ($B3).
Как видим, список создан.
Теперь, чтобы и нижние ячейки приобрели те же свойства, как и в предыдущий раз, выделяем верхние ячейки, и при нажатой клавише мышки «протаскиваем» вниз.
Всё, таблица создана.
Мы разобрались, как сделать выпадающий список в Экселе. В программе можно создавать, как простые выпадающие списки, так и зависимые. При этом, можно использовать различные методы создания. Выбор зависит от конкретного предназначения списка, целей его создания, области применения, и т.д.
Создание раскрывающегося списка
Чтобы упростить работу пользователей с листом, добавьте в ячейки раскрывающиеся списки. Раскрывающиеся списки позволяют пользователям выбирать элементы из созданного вами списка.
На новом листе введите данные, которые должны отображаться в раскрывающемся списке. Желательно, чтобы элементы списка содержались в таблице Excel. Если это не так, список можно быстро преобразовать в таблицу, выделив любую ячейку диапазона и нажав клавиши CTRL+T.
Почему данные следует поместить в таблицу? Потому что в этом случае при добавлении и удалении элементов все раскрывающиеся списки, созданные на основе этой таблицы, будут обновляться автоматически. Дополнительные действия не требуются.
Выделите на листе ячейку, в которую требуется поместить раскрывающийся список.
На ленте откройте вкладку Данные и нажмите кнопку Проверка данных.
Примечание: Если кнопка Проверка данных недоступна, возможно, лист защищен или является общим. Разблокируйте определенные области защищенной книги или отмените общий доступ к листу, а затем повторите шаг 3.
На вкладке Параметры в поле Тип данных выберите пункт Список.
Щелкните поле Источник и выделите диапазон списка. В примере данные находятся на листе «Города» в диапазоне A2:A9. Обратите внимание на то, что строка заголовков отсутствует в диапазоне, так как она не является одним из вариантов, доступных для выбора.
Если можно оставить ячейку пустой, установите флажок Игнорировать пустые ячейки.
Установите флажок Список допустимых значений
Откройте вкладку Подсказка по вводу.
Если вы хотите, чтобы при выборе ячейки появлялось всплывающее сообщение, установите флажок Отображать подсказку, если ячейка является текущей и введите заголовок и сообщение в соответствующие поля (до 225 символов). Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.
Откройте вкладку Сообщение об ошибке.
Если вы хотите, чтобы при вводе значения, которого нет в списке, появлялось всплывающее сообщение, установите флажок Выводить сообщение об ошибке, выберите параметр в поле Вид и введите заголовок и сообщение. Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.
Не знаете, какой параметр выбрать в поле Вид?
Чтобы отобразить сообщение, не препятствующее вводу данных, которые не содержатся в раскрывающемся списке, выберите вариант Сообщение или «Предупреждение». Если выбрать вариант «Сообщение», сообщение будет отображаться со значком , а если «Предупреждение» — со значком .
Чтобы заблокировать пользователям ввод данных, которые не содержатся в раскрывающемся списке, выберите вариант Остановка.
Примечание: Если вы не добавили заголовок и текст, по умолчанию выводится заголовок «Microsoft Excel» и сообщение «Введенное значение неверно. Набор значений, которые могут быть введены в ячейку, ограничен».
После создания раскрывающегося списка убедитесь, что он работает правильно. Например, рекомендуется проверить, изменяется ли ширина столбцов и высота строк при отображении всех ваших записей.
Если список элементов для раскрывающегося списка находится на другом листе и вы хотите запретить пользователям его просмотр и изменение, скройте и защитите этот лист. Подробнее о защите листов см. в статье Блокировка ячеек.
Если вы решили изменить элементы раскрывающегося списка, см. статью Добавление и удаление элементов раскрывающегося списка.
Чтобы удалить раскрывающийся список, см. статью Удаление раскрывающегося списка.
Предлагаем скачать образец книги с несколькими примерами проверки данных, аналогичными примеру в этой статье. Вы можете воспользоваться ими или создать собственные сценарии проверки данных. Скачать примеры проверки данных Excel.
Ввод данных станет быстрее и точнее, если ограничить значения в ячейке вариантами из раскрывающегося списка.
Сначала создайте на листе список допустимых элементов, а затем выполните сортировку или расположите их в нужном порядке. В дальнейшем эти элементы могут служить источником для раскрывающегося списка данных. Если список небольшой, на него можно легко ссылаться и вводить элементы прямо в средстве проверки данных.
Создайте список допустимых элементов для раскрывающегося списка. Для этого введите элементы на листе в одном столбце или строке без пустых ячеек.
Выделите ячейки, для которых нужно ограничить ввод данных.
На вкладке Данные в группе Инструменты нажмите кнопку Проверка данных или Проверить.
Примечание: Если команда проверки недоступна, возможно, лист защищен или книга является общей. Если книга является общей или лист защищен, изменить параметры проверки данных невозможно. Дополнительные сведения о защите книги см. в статье Защита книги.
Откройте вкладку Параметры и во всплывающем меню Разрешить выберите пункт Список.
Щелкните поле Источник и выделите на листе список допустимых элементов.
Диалоговое окно свернется, чтобы было видно весь лист.
Нажмите клавишу ВВОД или кнопку Развернуть , чтобы развернуть диалоговое окно, а затем нажмите кнопку ОК.
Значения также можно ввести непосредственно в поле Источник через запятую.
Чтобы изменить список допустимых элементов, просто измените значения в списке-источнике или диапазон в поле Источник.
Можно указать собственное сообщение об ошибке, которое будет отображаться при вводе недопустимых данных. На вкладке Данные нажмите кнопку Проверка данных или Проверить, а затем откройте вкладку Сообщение об ошибке.
На новом листе введите данные, которые должны отображаться в раскрывающемся списке. Желательно, чтобы элементы списка содержались в таблице Excel.
Почему данные следует поместить в таблицу? Потому что в этом случае при добавлении и удалении элементов все раскрывающиеся списки, созданные на основе этой таблицы, будут обновляться автоматически. Дополнительные действия не требуются.
Выделите на листе ячейку, в которую требуется поместить раскрывающийся список.
На ленте откройте вкладку Данные и нажмите кнопку Проверка данных.
На вкладке Параметры в поле Разрешить выберите пункт Список.
Если вы уже создали таблицу с элементами раскрывающегося списка, щелкните поле Источник и выделите ячейки, содержащие эти элементы. Однако не включайте в него ячейку заголовка. Добавьте только ячейки, которые должны отображаться в раскрывающемся списке. Список элементов также можно ввести непосредственно в поле Источник через запятую. Например:
Фрукты;Овощи;Зерновые культуры;Молочные продукты;Перекусы
Если можно оставить ячейку пустой, установите флажок Игнорировать пустые ячейки.
Установите флажок Список допустимых значений
Откройте вкладку Сообщение для ввода.
Если вы хотите, чтобы при выборе ячейки появлялось всплывающее сообщение, установите флажок Показывать сообщения и введите заголовок и сообщение в соответствующие поля (до 225 символов). Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.
Откройте вкладку Сообщение об ошибке.
Если вы хотите, чтобы при вводе значения, которого нет в списке, появлялось всплывающее сообщение, установите флажок Показывать оповещения, выберите параметр в поле Тип и введите заголовок и сообщение. Если вы не хотите, чтобы сообщение отображалось, снимите этот флажок.
Нажмите кнопку ОК.
После создания раскрывающегося списка убедитесь, что он работает правильно. Например, рекомендуется проверить, изменяется ли ширина столбцов и высота строк при отображении всех ваших записей. Если вы решили изменить элементы раскрывающегося списка, см. статью Добавление и удаление элементов раскрывающегося списка. Чтобы удалить раскрывающийся список, см. статью Удаление раскрывающегося списка.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
Выпадающий список в Excel с помощью инструментов или макросов
Под выпадающим списком понимается содержание в одной ячейке нескольких значений. Когда пользователь щелкает по стрелочке справа, появляется определенный перечень. Можно выбрать конкретное.
Очень удобный инструмент Excel для проверки введенных данных. Повысить комфорт работы с данными позволяют возможности выпадающих списков: подстановка данных, отображение данных другого листа или файла, наличие функции поиска и зависимости.
Создание раскрывающегося списка
Путь: меню «Данные» — инструмент «Проверка данных» — вкладка «Параметры». Тип данных – «Список».
Ввести значения, из которых будет складываться выпадающий список, можно разными способами:
- Вручную через «точку-с-запятой» в поле «Источник».
- Ввести значения заранее. А в качестве источника указать диапазон ячеек со списком.
- Назначить имя для диапазона значений и в поле источник вписать это имя.
Любой из вариантов даст такой результат.
Выпадающий список в Excel с подстановкой данных
Необходимо сделать раскрывающийся список со значениями из динамического диапазона. Если вносятся изменения в имеющийся диапазон (добавляются или удаляются данные), они автоматически отражаются в раскрывающемся списке.
- Выделяем диапазон для выпадающего списка. В главном меню находим инструмент «Форматировать как таблицу».
- Откроются стили. Выбираем любой. Для решения нашей задачи дизайн не имеет значения. Наличие заголовка (шапки) важно. В нашем примере это ячейка А1 со словом «Деревья». То есть нужно выбрать стиль таблицы со строкой заголовка. Получаем следующий вид диапазона:
- Ставим курсор в ячейку, где будет находиться выпадающий список. Открываем параметры инструмента «Проверка данных» (выше описан путь). В поле «Источник» прописываем такую функцию:
Протестируем. Вот наша таблица со списком на одном листе:
Добавим в таблицу новое значение «елка».
Теперь удалим значение «береза».
Осуществить задуманное нам помогла «умная таблица», которая легка «расширяется», меняется.
Теперь сделаем так, чтобы можно было вводить новые значения прямо в ячейку с этим списком. И данные автоматически добавлялись в диапазон.
- Сформируем именованный диапазон. Путь: «Формулы» — «Диспетчер имен» — «Создать». Вводим уникальное название диапазона – ОК.
- Создаем раскрывающийся список в любой ячейке. Как это сделать, уже известно. Источник – имя диапазона: =деревья.
- Снимаем галочки на вкладках «Сообщение для ввода», «Сообщение об ошибке». Если этого не сделать, Excel не позволит нам вводить новые значения.
- Вызываем редактор Visual Basic. Для этого щелкаем правой кнопкой мыши по названию листа и переходим по вкладке «Исходный текст». Либо одновременно нажимаем клавиши Alt + F11. Копируем код (только вставьте свои параметры).
- Сохраняем, установив тип файла «с поддержкой макросов».
- Переходим на лист со списком. Вкладка «Разработчик» — «Код» — «Макросы». Сочетание клавиш для быстрого вызова – Alt + F8. Выбираем нужное имя. Нажимаем «Выполнить».
Когда мы введем в пустую ячейку выпадающего списка новое наименование, появится сообщение: «Добавить введенное имя баобаб в выпадающий список?».
Нажмем «Да» и добавиться еще одна строка со значением «баобаб».
Выпадающий список в Excel с данными с другого листа/файла
Когда значения для выпадающего списка расположены на другом листе или в другой книге, стандартный способ не работает. Решить задачу можно с помощью функции ДВССЫЛ: она сформирует правильную ссылку на внешний источник информации.
- Делаем активной ячейку, куда хотим поместить раскрывающийся список.
- Открываем параметры проверки данных. В поле «Источник» вводим формулу: =ДВССЫЛ(“[Список1.xlsx]Лист1!$A$1:$A$9”).
Имя файла, из которого берется информация для списка, заключено в квадратные скобки. Этот файл должен быть открыт. Если книга с нужными значениями находится в другой папке, нужно указывать путь полностью.
Как сделать зависимые выпадающие списки
Возьмем три именованных диапазона:
Это обязательное условие. Выше описано, как сделать обычный список именованным диапазоном (с помощью «Диспетчера имен»). Помним, что имя не может содержать пробелов и знаков препинания.
- Создадим первый выпадающий список, куда войдут названия диапазонов.
- Когда поставили курсор в поле «Источник», переходим на лист и выделяем попеременно нужные ячейки.
- Теперь создадим второй раскрывающийся список. В нем должны отражаться те слова, которые соответствуют выбранному в первом списке названию. Если «Деревья», то «граб», «дуб» и т.д. Вводим в поле «Источник» функцию вида =ДВССЫЛ(E3). E3 – ячейка с именем первого диапазона.
Выбор нескольких значений из выпадающего списка Excel
Бывает, когда из раскрывающегося списка необходимо выбрать сразу несколько элементов. Рассмотрим пути реализации задачи.
- Создаем стандартный список с помощью инструмента «Проверка данных». Добавляем в исходный код листа готовый макрос. Как это делать, описано выше. С его помощью справа от выпадающего списка будут добавляться выбранные значения.
- Чтобы выбранные значения показывались снизу, вставляем другой код обработчика.
- Чтобы выбираемые значения отображались в одной ячейке, разделенные любым знаком препинания, применим такой модуль.
Private Sub Worksheet_Change( ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range( «C2:C5» )) Is Nothing And Target.Cells.Count = 1 Then
Application.EnableEvents = False
newVal = Target
Application.Undo
oldval = Target
If Len(oldval) <> 0 And oldval <> newVal Then
Target = Target & «,» & newVal
Else
Target = newVal
End If
If Len(newVal) = 0 Then Target.ClearContents
Application.EnableEvents = True
End If
End Sub
Не забываем менять диапазоны на «свои». Списки создаем классическим способом. А всю остальную работу будут делать макросы.
Выпадающий список с поиском
- На вкладке «Разработчик» находим инструмент «Вставить» – «ActiveX». Здесь нам нужна кнопка «Поле со списком» (ориентируемся на всплывающие подсказки).
- Щелкаем по значку – становится активным «Режим конструктора». Рисуем курсором (он становится «крестиком») небольшой прямоугольник – место будущего списка.
- Жмем «Свойства» – открывается перечень настроек.
- Вписываем диапазон в строку ListFillRange (руками). Ячейку, куда будет выводиться выбранное значение – в строку LinkedCell. Для изменения шрифта и размера – Font.
При вводе первых букв с клавиатуры высвечиваются подходящие элементы. И это далеко не все приятные моменты данного инструмента. Здесь можно настраивать визуальное представление информации, указывать в качестве источника сразу два столбца.