Выпадающий список с показом изображений

Необходимое предисловие

Если у вас Excel 2010 или древнее, то можно почитать вот эту статью, где было описано как реализовать такой выпадающий список с помощью функции СМЕЩ (OFFSET).

Если же у вас Excel 2013, 2016, 2019 или новее, то описанная техника в этих версиях, к сожалению, уже не работает и нужен другой подход, разобранный в этой статье далее.

Шаг 1. Готовим каталог изображений

Для начала нужно создать таблицу-справочник, где будет храниться информация о наших объектах (товарах, людях и т.д.) и их изображения. Выглядеть это должно примерно так:

Каталог изображений

При создании имеет смысл держать в голове несколько моментов:

  • Если в будущем планируется добавление новых строк (товаров), то лучше сразу оформить такой каталог в виде "умной" динамической таблицы с помощью сочетания клавиш Ctrl+T или кнопки Форматировать как таблицу на вкладке Главная (Home - Format as Table). Имя созданной "умной" таблицы можно задать на вкладке Конструктор (Design) - я назвал её в этом примере Каталог.
  • Картинки должны полностью вписываться в соответствующие ячейки и не выходить за их границы (иначе они будут обрезаны). Для упорядочивания изображений после их выделения удобно использовать команды выравнивания и распределения на вкладке Формат (Format). Там же можно задать размеры (высоту и ширину) изображений, чтобы быстро вписать их в ячейки:

    Команды выравнивания

  • В отдельном столбце рядом с изображениями (в нашем примере он называется ИД) нужно придумать и ввести имена диапазонов, по которым мы впоследствии будем адресоваться к картинкам. Эти имена должны быть уникальными, не содержать пробелов и не быть похожими на адреса ячеек (A1, B3 и т.п.)

Шаг 2. Создаем именованные диапазоны для ячеек с картинками

Чтобы массово и быстро присвоить ячейкам с изображениями в столбце Картинка придуманные имена из столбца ИД используем следующий трюк:

  1. Выделяем столбцы ИД и Картинка (диапазон C2:D7 в нашем примере)
  2. Открываем вкладку Формулы (Formulas)
  3. Выбираем команду Создать из выделенного (Create from selection).
  4. Ставим флажок В столбце слева (Left column), остальные флажки выключаем и жмем ОК.

Присваиваем имена ячейкам с картинками

Проверить получившиеся результаты можно в Диспетчере имен там же на вкладке Формулы (Formulas - Name manager).

Шаг 3. Создаем выпадающий список товаров

Теперь нам нужно создать выпадающий список с названиями товаров, откуда пользователь впоследствии будет их выбирать. Он может быть на том же или на другом листе (но в этой же книге!).

Создаем выпадающий список

Техника тут простая:

  1. Выделяем ячейку для выпадающего списка.
  2. Выбираем на вкладке Данные команду Проверка данных (Data - Data Validation).
  3. Из выпадающего списка Тип (Allow) выбираем вариант Список (List) и в поле Источник (Source) вводим формулу:

=ДВССЫЛ("Каталог[Название]")

=INDIRECT("Каталог[Название]")

Здесь "Каталог[Название]" - это текстовая (в кавычках!) ссылка на содержимое столбца с названиями товаров в нашей "умной" таблице-каталоге, а функция ДВССЫЛ (INDIRECT) нужна, чтобы превратить эту текстовую ссылку в настоящую.

Делать так приходится потому, что в поле Источник, к сожалению, нельзя прописывать прямые ссылки на строки или столбцы "умных" таблиц. Однако с помощью "костыля" в виде ДВССЫЛ мы это ограничение успешно обходим.

Шаг 4. Вытаскиваем имя диапазона для выбранного товара

Здесь же давайте получим имя диапазона из столбца ИД для выбранного в выпадающем списке товара. Проще всего это сделать классической функцией ВПР (VLOOKUP):

Извлекаем имя диапазона с картинкой

В английской версии это будет:

=VLOOKUP(C2;Каталог;3;FALSE)

Здесь:

  • С2 - адрес ячейки с выпадающим списком, содержимой которой мы ищем
  • Каталог - имя нашей "умной" таблицы
  • 3 - порядковый номер столбца ИД в "умной" таблице
  • ЛОЖЬ (или 0) - точный режим поиска

Шаг 5. Создаем именованный диапазон с ДВССЫЛ

Как вы уже, наверное, догадались, мы будем использовать содержимое ячейки E2 как ссылку на нужное нам изображение. Однако напрямую сделать это не получится, т.к. для Excel её содержимое формально является текстом. Чтобы оживить текстовую ссылку и превратить её в настоящую - используем уже знакомую нам функцию ДВССЫЛ (INDIRECT). Для этого:

  1. Открываем Диспетчер имён на вкладке Формулы и жмём кнопку Создать (Formulas - Name Manager - Create).
  2. Вводим любое подходящее имя для создаваемого диапазона, например Фото.
  3. В поле Ссылка (Reference) вводим формулу: =ДВССЫЛ(Лист2!$E$2)

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

Шаг 6. Добавляем картинку и привязываем её к списку

Остался последний шаг:

  1. Выделим в нашей "умной" таблице любую ячейку с картинкой (например D2).
  2. На вкладке Главная развернём выпадающий список Копировать и выберем опцию Копировать как рисунок (Home - Copy - Copy as Picture). В появившемся затем окне можно выбрать вариант Как на экране (As on screen) и Растовый (Bitmap):

    Копируем как рисунок

    Нужно сделать именно так, чтобы скопировались не отдельно ячейка и картинка, а всё содержимое ячейки вместе с картинкой как единое целое изображение.

  3. Вставим скопированное обычным образом (например через Ctrl+V) рядом с нашим выпадающим списком.
  4. Для вставленной (и выделенной) картинки пропишем в строке формул ссылку на созданный ранее именованный диапазон (=Фото) и нажмём на Enter:

    Вешаем на изображение ссылку на диапазон Фото

Вот, собственно, и всё :) Можно наслаждаться результатом:

Готовый выпадающий список с изображением

Примечания

  • Ячейку С2, где мы с помощью ВПР получали имя нужного нам изображения можно, само-собой, скрыть.
  • Чтобы не было видно уродливых рамок вокруг картинки - нужно отключить все границы и убрать заливку на листе с каталогом. Для "умных" таблиц это делается на вкладке Конструктор (Design). Также можно отключить на листе каталога и тонкие серые линии сетки через Вид - Сетка (View - Gridlines).
  • Если в будущем вы будете дописывать новые товары и добавлять новые изображения в каталог - не забудьте присвоить новым ячейкам имена через команду Формулы - Создать из выделенного.

Ссылки по теме


Наверх