Excel условие на картинку

 

jonny0

Пользователь

Сообщений: 90
Регистрация: 28.07.2015

Ну все, поломал мозги окончательно. Не работает у меня ничего. Уже повторил полностью пример от Павлова, но НИЧЕГО не получается! Картинки не меняются. Да и вообще я по этим формулам не могу догнать как будут меняться картинки — таблицу проиндексировали, с выбором связали, соответсвие картинке назначили, НО с каких делов картинка будет вставляться в нужное место я не допонимаю.
Кузьмич, ваш пример проще, чем у Павлова, но из за того ещё больше ничего не ясно. Почему на листе 1 у вас картинки вставляются туда, куда вставляются?

Изменено: jonny009.11.2015 10:09:37

Содержание

  1. Excel условие на картинку
  2. 5 примеров использования новой функции IMAGE в Excel
  3. Синтаксис функции ИЗОБРАЖЕНИЕ (IMAGE)
  4. Пример 1. Создание штрих-кодов и QR-кодов
  5. Пример 2. Логотипы компаний
  6. Пример 3. Нестандартные диаграммы
  7. Пример 4. Скриншоты сайтов
  8. Пример 5. Географические карты
  9. Аналог функции IMAGE на VBA
  10. Excel условие на картинку

Excel условие на картинку

Добрый день уважаемые формучане.
Возник такой вопрос, и такая подребность в создании следующей формулы в excel.
Когда я допустим в ячейку А1 допустим ввожу какое то слово, нужно чтобы в ячейке А2 появлялось изображение соответствующее типу этого слова.
В формуле ЕСЛИ нашел только возможность вставки каких либо значений (не изображений получается)
Была идея, что возможно картинку можно как то привязать к ячейке и просто обращаться к ячейке, но ничего не вышло.
Типов будет несколько, то есть примерно так:
ЕСЛИ А1: Яблоко, Груша, Банан — > вставить картинку фрукты
ЕСЛИ А1: Огурец, помидор — > вставить картинку овощи
и т.д.
Подскажите пожалуйста как это можно реализовать.

И дополнительный схожий вопрос. Нужно допустим, чтобы я в ячейке В1 писал цифру например 1, 2, 3 и после нажатия Enter появлялось изображение соответствующее этой цифре. Возможно ли это, чтобы в этой же ячейке появлялось
Пожалуйста помогите, заранее спасибо

Добрый день уважаемые формучане.
Возник такой вопрос, и такая подребность в создании следующей формулы в excel.
Когда я допустим в ячейку А1 допустим ввожу какое то слово, нужно чтобы в ячейке А2 появлялось изображение соответствующее типу этого слова.
В формуле ЕСЛИ нашел только возможность вставки каких либо значений (не изображений получается)
Была идея, что возможно картинку можно как то привязать к ячейке и просто обращаться к ячейке, но ничего не вышло.
Типов будет несколько, то есть примерно так:
ЕСЛИ А1: Яблоко, Груша, Банан — > вставить картинку фрукты
ЕСЛИ А1: Огурец, помидор — > вставить картинку овощи
и т.д.
Подскажите пожалуйста как это можно реализовать.

И дополнительный схожий вопрос. Нужно допустим, чтобы я в ячейке В1 писал цифру например 1, 2, 3 и после нажатия Enter появлялось изображение соответствующее этой цифре. Возможно ли это, чтобы в этой же ячейке появлялось
Пожалуйста помогите, заранее спасибо LeMoN

Сообщение Добрый день уважаемые формучане.
Возник такой вопрос, и такая подребность в создании следующей формулы в excel.
Когда я допустим в ячейку А1 допустим ввожу какое то слово, нужно чтобы в ячейке А2 появлялось изображение соответствующее типу этого слова.
В формуле ЕСЛИ нашел только возможность вставки каких либо значений (не изображений получается)
Была идея, что возможно картинку можно как то привязать к ячейке и просто обращаться к ячейке, но ничего не вышло.
Типов будет несколько, то есть примерно так:
ЕСЛИ А1: Яблоко, Груша, Банан — > вставить картинку фрукты
ЕСЛИ А1: Огурец, помидор — > вставить картинку овощи
и т.д.
Подскажите пожалуйста как это можно реализовать.

И дополнительный схожий вопрос. Нужно допустим, чтобы я в ячейке В1 писал цифру например 1, 2, 3 и после нажатия Enter появлялось изображение соответствующее этой цифре. Возможно ли это, чтобы в этой же ячейке появлялось
Пожалуйста помогите, заранее спасибо Автор — LeMoN
Дата добавления — 28.01.2015 в 20:41

Источник

5 примеров использования новой функции IMAGE в Excel

Уже несколько лет в Google Sheets существует функция IMAGE, позволяющая вставлять в ячейки листа картинки по ссылке из интернета. Что, впрочем, вполне естественно, поскольку Google-таблицы изначально заточены под работу онлайн — им сам бог велел такую возможность использовать.

У Excel же ничего подобного долго не было. И вот, наконец, осенью 2022 года Microsoft начала среди добровольцев-тестировщиков из программы Office Insider обкатку своего аналога — новой функции ИЗОБРАЖЕНИЕ (IMAGE), также позволяющей вставлять по веб-ссылке картинки из интернета прямо в ячейки листа Microsoft Excel. В начале 2023 года эту функцию уже стали потихонечку разливать с обновлениями подписчикам Office 365 и недавно она, наконец, добралась и до меня. А значит я могу вам о ней рассказать на нескольких практических примерах.

Если же последней версии Office у вас пока (или уже) не предвидится, то не расстраивайтесь — в конце этой статьи я покажу как при помощи короткого макроса можно сделать упрощённый аналог этой функции уже сегодня.

Синтаксис функции ИЗОБРАЖЕНИЕ (IMAGE)

=ИЗОБРАЖЕНИЕ(источник; [замещающий_текст]; [изменение_размера]; [высота]; [ширина])

Первым и единственным обязательным аргументом новой функции должна быть текстовая ссылка на файл изображения из интернета. Причем это должна быть именно веб, а не локальная ссылка на файл на жестком или сетевом диске. Если доступа в интернет сейчас нет, то вместо картинки будет ошибка #СОЕДИНЕНИЕ! (если нет интернета) или #ЗАБЛОКИР! (если ваши настройки безопасности не дают загрузить картинку). Если вы хотите подстраховаться на такой случай, то вторым аргументом как раз можно ввести замещающий текст, который будет отображен вместо отсутствующей картинки.

Третий аргумент отвечает за размеры и пропорции изображения и может принимать значения:

  • 0 — вписать изображение в ячейку с сохранением пропорций
  • 1 — заполнить всю площадь ячейки не сохраняя пропорции картинки
  • 2 — сохранить исходный размер изображения (тут оно запросто может вылезти за пределы ячейки)
  • 3 — задать высоту и ширину изображения принудительно (тогда их надо обязательно прописать в четвертом и пятом аргументе функции)

Большим преимуществом новой функции является то, что картинка будет не просто вставлена на лист, а именно вписана в конкретную ячейку, т.е. будет вместе с ней двигаться, сжиматься и растягиваться. Это принципиально отличается от классической вставки картинок командой Вставка — Рисунки (Insert — Pictures) , когда изображение и лист находились, по сути, в разных слоях и вы могли запросто случайно сдвинуть или даже удалить картинку после вставки. Здесь же всё чётко.

Также если щёлкнуть по вставленному функцией изображению правой кнопкой мыши и выбрать команду Показать сведения об изображении (Show image properties) , то во всплывающем окне можно будет увидеть картинку в оригинальном разрешении.

Теперь давайте рассмотрим несколько вкусных примеров использования новой функции ИЗОБРАЖЕНИЕ на практике.

Пример 1. Создание штрих-кодов и QR-кодов

Этикетки для маркировки товаров, ценники, бланки, наклейки — всё это требует формирования штрих-кодов различного типа. Теперь для этого можно не использовать специальные программы, а реализовать всё в Excel.

Идём на сайт австрийской компании TEC-IT, где можно легко создать штрих-код любого стандарта с заданным содержимым:

Ссылка, по которой формируется изображение штрих-кода висит на кнопке Download и выглядит так:

_ttps://barcode.tec-it.com/en/ Тип_штрихкода ?data= Наше_содержимое_кода

Например, для распространенного типа Code-128, который кодирует строку «ABC-abc-1234» ссылка будет выглядеть как:

_ttps://barcode.tec-it.com/en/ Code128 ?data= ABC-abc-1234

Так что просто подклеиваем справа от последнего знака «равно» наши артикулы, заворачиваем всё в функцию ИЗОБРАЖЕНИЕ и получаем автоматизированное создание штрих-кодов для любого количества товаров:

Если нужен не линейный, а квадратный QR-код, то можно использовать другой бесплатный сайт — QR Code Generator:

Здесь ссылка для формирования QR-кода выглядит следующим образом:

ttps://api.qrserver.com/v1/create-qr-code/?data= Наши_данные &size=100×100

Опять же, подставляем туда адреса ячеек с исходными данными и получаем возможность массово клепать QR-коды в любом количестве:

Пример 2. Логотипы компаний

Ещё одна любопытная возможность — это автоматизированная загрузка логотипов известных компаний с помощью веб-сервиса https://logo.clearbit.com. Идея та же — подклеиваем адрес сайта нужной нам компании в конец ссылки — и получаем от сервиса изображение логотипа заданной компании, которое выводит на лист наша функция ИЗОБРАЖЕНИЕ:

Можно использовать в дашбордах по анализу рынка, для визуализации инвестиционного портфеля, в прайс-листах и т.д. — у кого на сколько фантазии хватит.

Пример 3. Нестандартные диаграммы

На сайте QuickChart.io можно в режиме онлайн-конструктора создавать разнообразные диаграммы по вашим данным и использовать их затем в ваших проектах. Нюанс в том, что помимо стандартных диаграмм (которые Excel и сам неплохо умеет строить), здесь есть несколько весьма симпатичных нестандартных, например, спидометры и прогресс-бары, диаграммы Санкей для визуализации связей и т.д.

Для получения, например, круговой диаграммы-шкалы прогресса, нам потребуется сформировать вот такую веб-ссылку:

И визуализировать её затем с помощью нашей новой функции ИЗОБРАЖЕНИЕ (IMAGE) :

Или можно, например, сформировать и вывести изображение вот такого нарядного спидометра со стрелкой:

Здесь ссылка чуть похитрее, т.к. в неё уже зашиты размеры трёх диапазонов шкалы и их цвета, а также положение стрелки:

Названия цветов для заливки сегментов диаграммы можно взять из справочника.

Пример 4. Скриншоты сайтов

Если вы работаете с интернет-ресурсами или в области SEO-SMM, то вам пригодится возможность быстро формировать скриншоты заданных веб-страниц и вставлять их на лист Excel в виде изображений. Это можно сделать с помощью веб-сервиса https://mini.s-shot.ru, добавив к его адресу ссылку на интересующую страницу.

Подставляем её в нашу функцию ИЗОБРАЖЕНИЕ и получаем:

При большом количестве ссылок и скриншотов вся эта история может первый раз ощутимо подтормаживать — не пугайтесь.

Пример 5. Географические карты

Опять же, вставлять на лист интерактивные географические карты Excel уже давно умеет (через Вставка — Карты Bing, например), но можно это сделать и с помощью новой функции ИЗОБРАЖЕНИЕ, если найти веб-сервис, который по заданным координатам или названию населенного пункта будет формировать для нас скриншот карты в нужном месте. Обычно такие сервисы платные и используют API — специальный механизм запросов для общения с ними.

Например, на одном из таких сайтов Geoapify.com ссылка для получения нужного фрагмента карты случае формируется из:

  • долготы (longtitude)
  • широты (latitude)
  • коэффициента масштаба (zoom)
  • ключа API — длинного буквенно-цифрового кода, который вы получаете в личном кабинете в качестве вашего личного идентификатора:

Обратите внимание, что в качестве разделителя между целой и дробной частью должна быть использована точка, поэтому дополнительно придётся использовать функцию ПОДСТАВИТЬ (SUBSTITUTE), чтобы её подменить.

Аналог функции IMAGE на VBA

Если приведенные выше примеры вас заинтриговали, но последней версии Excel у вас пока нет, то можно относительно легко склепать на коленке упрощенный аналог этой функции на Visual Basic. Только вставлять картинки он будет не по ссылке из интернета, а по пути к файлу с жесткого диска вашего ПК (что в некоторых случаях может быть даже предпочтительнее — интернет у нас не везде бывает).

Откройте редактор макросов сочетанием клавиш Alt + F11 или кнопкой Visual Basic на вкладке Разработчик (Developer) . Вставьте новый пустой модуль командой меню Insert — Module и скопируйте туда текст следующего макроса:

Теперь останется ввести в ячейки листа пути к файлам картинок, а затем выделить эти ячейки и запустить наш макрос командой Разработчик — Макросы (Developer — Macros) или сочетанием клавиш Alt + F8 . Макрос пробежит по всем выделенным ячейкам и вставит в каждую картинку из указанного файла, вписав её в по размерам в каждую ячейку.

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

Если нужно будет подгонять размер картинок не по высоте, а по ширине ячеек, то замените в коде свойство Height на Width.

Источник

Excel условие на картинку

Картинка в А1 сделана инструментом «Камера» — http://www.excelworld.ru/publ/hacks/tools/camera/27-1-0-55
И обратите внимание на случай b=bкр — в условиях он подходит под обе формулы. Я понимаю, что при равенстве b=bкр обе формулы скорее всего (я, поскольку ленивый, не проверял, просто предположил) дадут одинаковый результат, но какую из них нужно показать? Сейчас показывается первая.

А, да — поиграться можно, меняя ячейки АЕ15 и АЕ16

Картинка в А1 сделана инструментом «Камера» — http://www.excelworld.ru/publ/hacks/tools/camera/27-1-0-55
И обратите внимание на случай b=bкр — в условиях он подходит под обе формулы. Я понимаю, что при равенстве b=bкр обе формулы скорее всего (я, поскольку ленивый, не проверял, просто предположил) дадут одинаковый результат, но какую из них нужно показать? Сейчас показывается первая.

А, да — поиграться можно, меняя ячейки АЕ15 и АЕ16 _Boroda_

Скажи мне, кудесник, любимец ба’гов.
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

Ответить

Картинка в А1 сделана инструментом «Камера» — http://www.excelworld.ru/publ/hacks/tools/camera/27-1-0-55
И обратите внимание на случай b=bкр — в условиях он подходит под обе формулы. Я понимаю, что при равенстве b=bкр обе формулы скорее всего (я, поскольку ленивый, не проверял, просто предположил) дадут одинаковый результат, но какую из них нужно показать? Сейчас показывается первая.

А, да — поиграться можно, меняя ячейки АЕ15 и АЕ16 Автор — _Boroda_
Дата добавления — 10.10.2016 в 09:23

Источник

Картинка в зависимости от значения

Дерево

Дата: Понедельник, 21.03.2016, 19:38 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 17


Репутация:

0

±

Замечаний:
20% ±


Excel 2010

Добрый день. Подскажите как сделать, так, чтобы при определенном значении выпадала соответствующая картинка.
К примеру:
количество значений — 3
количество картинок — 3

если 1 то 1 картинка….2 то вторая и так далее

Заранее спасибо=)

 

Ответить

Pelena

Дата: Понедельник, 21.03.2016, 19:45 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Здравствуйте.
Читаем статью


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

gling

Дата: Понедельник, 21.03.2016, 19:45 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 2449


Репутация:

652

±

Замечаний:
0% ±


2010

Здравствуйте. Посмотрите здесь


ЯД-41001506838083

 

Ответить

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

Вставка и изменение изображения динамически на основе значений, которые вы вводите в ячейку
Динамическое изменение изображения на основе значений ячеек с помощью замечательного инструмента


Вставка и изменение изображения динамически на основе значений, которые вы вводите в ячейку

Как показано на скриншоте ниже, вы хотите отображать соответствующие изображения динамически на основе значения, введенного вами в ячейку G2. При вводе банана в ячейку G2 изображение банана будет отображаться в ячейке H2. При вводе «Ананас» в ячейку G2 изображение в ячейке H2 превратится в соответствующее изображение ананаса.

1. Создайте на листе два столбца, первый диапазон столбцов. A2: A4 содержит название картинки, а второй диапазон столбца B2: B4 содержит соответствующие изображения. См. Показанный снимок экрана.

2. Нажмите Формулы > Менеджер имен.

3. в Менеджер имен диалогового окна, нажмите Новинки кнопка. Затем Редактировать имя всплывает диалоговое окно, введите Продукт в Имя и фамилия поле введите формулу ниже в поле Относится к поле, а затем щелкните OK кнопка. Смотрите скриншот:

=INDIRECT(ADDRESS(2-1+MATCH(Sheet2!$G$2, Sheet2!$A$2:$A$4, 0), 2))

Заметки:

1). В формуле первое число 2 — номер строки вашего первого продукта. В этом случае мое первое название продукта находится в строке 2.

2). Лист2! $ G $ 2 это ячейка, на основе которой вы хотите, чтобы соответствующее изображение изменялось динамически.

3). Sheet2! $ A $ 2: $ A $ 4 это ваш список названий продуктов на текущем листе.

4). Последний номер 2 — это номер столбца, в котором находятся ваши изображения.

Вы можете изменить их по своему усмотрению в приведенной выше формуле.

4. Закрой Менеджер имен диалоговое окно.

5. Выберите изображение в столбце «Изображения» и нажмите Ctrl + C ключи одновременно, чтобы скопировать его. Затем вставьте его в новое место на текущем листе. Здесь я копирую изображение яблока и помещаю его в ячейку H2.

6. Введите название фрукта, например Apple, в ячейку G2, щелкните, чтобы выбрать вставленное изображение, и введите формулу. = Продукт в Панель формул, затем нажмите Enter ключ. Смотрите скриншот:

Отныне при смене имени фрукта в ячейке G2 картинки в ячейке H2 будут динамически превращаться в соответствующие.

Вы можете быстро выбрать название фрукта, создав раскрывающийся список, содержащий все названия фруктов в ячейке G2, как показано на скриншоте ниже.


Легко вставляйте изображения в связанные ячейки на основе значений ячеек с помощью замечательного инструмента

Многим новичкам в Excel этот метод непрост. Здесь рекомендую Раскрывающийся список изображений особенность Kutools for Excel. С помощью этой функции вы можете легко создать динамический раскрывающийся список с полностью совпадающими значениями и изображениями.

Пожалуйста, сделайте следующее, чтобы применить функцию раскрывающегося списка изображений Kutools for Excel для создания раскрывающегося списка динамических изображений в Excel.

1. Во-первых, вам нужно создать два столбца, отдельно содержащие значения и соответствующие изображения, как показано на скриншоте ниже.

2. Нажмите Кутулс > Импорт Экспорт > Сопоставить Импорт изображений.

3. в Раскрывающийся список изображений диалоговое окно необходимо настроить следующим образом.

3.1) Если вы создали столбцы значений и изображений на шаге 1 выше, проигнорируйте этот шаг;

3.2) В Step2 раздел, выберите два столбца, которые вы создали;

3.3) В Step3 В разделе выберите диапазон для вывода раскрывающегося списка динамического изображения.

Примечание: In Step3 раздел, нужно выбрать две колонки для размещения результатов. Один столбец предназначен для значений, а другой — для соответствующих изображений.

3.4) Нажмите ОК.

4. Затем Kutools for Excel всплывает диалоговое окно, напоминающее вам о том, что в процессе будут созданы некоторые промежуточные данные, щелкните Да для продолжения.

Затем создается динамический раскрывающийся список изображений. Изображение будет динамически меняться в зависимости от элемента, который вы выбрали в раскрывающемся списке.

Нажмите, чтобы узнать больше об этой функции …

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Статьи по теме:

  • Как создать динамическую гиперссылку на другой лист в Excel?
  • Как динамически извлечь список уникальных значений из диапазона столбцов в Excel?
  • Как создать динамический ежемесячный календарь в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Хитрости »

6 Февраль 2020              22697 просмотров


Вставить картинку в лист — по списку или выбору из ячейки

Сама по себе задача вставки картинки на листе не сложная и ответ лежит на поверхности: это доступно прямо из меню: Вставка(Insert) -группа Иллюстрации(Illustrations)Рисунок(Picture):
Вставка Рисунка в Excel
Кодом VBA вставить тоже не сложно, даже макрорекордер записывает это действие:

Sub InsertPicture()
    ActiveSheet.Pictures.Insert("G:ДокументыИзображенияExcel_vba_ru.png"). _
        Select
End Sub

Но что делать, если вставить надо картинку из заранее известной папки, но с изменяющимся именем? А если при этом еще надо не просто вставить — а подогнать размер картинки под размер ячейки? Например, в ячейке А2 название товара(соответствует названию картинки), а в В2 должно быть изображение. Здесь уже посложнее. Но тоже вполне реализуемо при помощи VBA

'---------------------------------------------------------------------------------------
' Author : The_Prist(Щербаков Дмитрий)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
'          WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
' Purpose: вставка в ячейку картинки с подгонкой под размеры ячейки
'---------------------------------------------------------------------------------------
Sub InsertPicToCell()
    'путь к папке с картинками
    Const sPicsPath As String = "G:ДокументыИзображения"
    Dim sPicName As String, sPFName As String, sSpName As String
    Dim oShp As Shape
    Dim zoom As Double
 
    'в этой ячейке выпадающий список с именами картинок
    sPicName = Range("A2").Value
    'если имя картинки не задано
    If sPicName = "" Then
        Exit Sub
    End If
    'проверяем наличие картинки в папке
    sPFName = sPicsPath & sPicName
    If Dir(sPFName, 16) = "" Then
        Exit Sub
    End If
    'в эту ячейку вставляем картинку
    With Range("B2")
        On Error Resume Next
        'задаем картинке уникальный адрес,
        'привязанный к адресу ячейки
        sSpName = "_" & .Address(0, 0) & "_autopaste"
        'если картинка уже есть - удаляем её
        Set oShp = ActiveSheet.Shapes(sSpName)
        If Not oShp Is Nothing Then
            oShp.Delete
        End If
        'вставляем выбранную картинку
        Set oShp = ActiveSheet.Shapes.AddPicture(sPFName, False, True, .Left + 1, .Top + 1, -1, -1)
        'определяем размеры картинки в зависимости от размера ячейки
        zoom = Application.Min(.Width / oShp.Width, .Height / oShp.Height)
        oShp.Height = oShp.Height * zoom - 2
        'переименовываем вставленную картинку(чтобы потом можно было заменить)
        oShp.Name = sSpName
    End With
End Sub

Чтобы использовать код необходимо создать в книге стандартный модуль(переходим в редактор VBA(Alt+F11) —InsertModule) и вставить в него приведенный выше код. Чтобы картинка вставилась в ячейку, надо записать имя картинки в ячейку A2, нажать сочетание клавиш Alt+F8 и выбрать макрос InsertPicToCell. Не очень удобно, правда?
Значит теперь попробуем сделать так, чтобы при каждом изменении в А2 картинка менялась сама, без необходимости запускать каждый раз код вручную. Для этого придется использовать возможность Excel отслеживать такие события, как изменения ячейки(чтобы лучше понять где это лучше сразу прочитать статью Что такое модуль? Какие бывают модули? и особое внимание уделить описанию про модули листов). Теперь чуть переделываем код:

Private Sub Worksheet_Change(ByVal Target As Range)
'---------------------------------------------------------------------------------------
' Author : The_Prist(Щербаков Дмитрий)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
'          WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
' Purpose: вставка в ячейку картинки с подгонкой под размеры ячейки
'---------------------------------------------------------------------------------------
    'путь к папке с картинками
    Const sPicsPath As String = "G:ДокументыИзображения"
    Dim sPicName As String, sPFName As String, sSpName As String
    Dim oShp As Shape
    Dim zoom As Double
    'т.к. список с именами картинок у нас в ячейке А2,
    'то определяем, что значение изменилось именно в ней
    '   если в ячейке А2 имена картинок, а список товара в другой ячейке
    '   то надо заменить А2 на ту, которая изменяется списком или руками
    If Intersect(Target, Range("A2")) Is Nothing Then
        'изменения не в А2 - ничего не делаем, завершаем код
        Exit Sub
    End If
    'в этой ячейке выпадающий список с именами картинок
    sPicName = Range("A2").Value
    'если имя картинки не задано
    If sPicName = "" Then
        Exit Sub
    End If
    'проверяем наличие картинки в папке
    sPFName = sPicsPath & sPicName
    If Dir(sPFName, 16) = "" Then
        Exit Sub
    End If
    'в эту ячейку вставляем картинку
    With Range("B2")
        On Error Resume Next
        'задаем картинке уникальный адрес,
        'привязанный к адресу ячейки
        sSpName = "_" & .Address(0, 0) & "_autopaste"
        'если картинка уже есть - удаляем её
        Set oShp = ActiveSheet.Shapes(sSpName)
        If Not oShp Is Nothing Then
            oShp.Delete
        End If
        'вставляем выбранную картинку
        Set oShp = ActiveSheet.Shapes.AddPicture(sPFName, False, True, .Left + 1, .Top + 1, -1, -1)
        'определяем размеры картинки в зависимости от размера ячейки
        zoom = Application.Min(.Width / oShp.Width, .Height / oShp.Height)
        oShp.Height = oShp.Height * zoom - 2
        'переименовываем вставленную картинку(чтобы потом можно было заменить)
        oShp.Name = sSpName
    End With
End Sub

Теперь переходим на лист, где в А2 будет изменяться название картинки -правая кнопка мыши на этом листе —Посмотреть код(View Code). Вставляем код выше. Все, теперь при любом изменении в А2 картинка будет изменяться(если указанный файл будет найден в нужной папке).
Если картинки расположены не в «G:ДокументыИзображения», а в той же папке, что и сама книга с кодом, достаточно эту строку
Const sPicsPath As String = «G:ДокументыИзображения»
заменить такими
Dim sPicsPath As String
sPicsPath = ThisWorkbook.Path & «»
тогда папка с книгой будет определяться автоматически.
Но я понимаю, что куда правильнее в ячейке А2 при помощи выпадающего списка выбирать наименование товара, а в В2 при помощи функции ВПР(VLOOKUP) подтягивать из справочника название картинки и уже по этому названию вставлять картинку. Но подстроить код под это уже не сложно. Приводить его здесь не буду, т.к. можно будет запутаться с описанием списка, функций, где и что. Тем более что сам код практически не отличается. К тому же именно в этой реализации код есть в приложенном к статье файле.
Скачать файл:

  Вставить картинку в ячейку (366,9 KiB, 2 392 скачиваний)


И еще часто встречающаяся задача по вставке картинок — это вставка картинок массово. Т.е. вставить картинки на основании значений, записанных в столбце. В данном случае это столбец В. А вставлять картинки будем в столбец С, подгоняя размеры картинок под размер каждой ячейки и проверяя, не вставляли ли мы эту картинку туда ранее
Таблица с именами картинок
Впрочем, основная часть кода была приведена выше — здесь мы лишь добавим цикл по ячейкам. Так же в этом коде мы используем диалог выбора папки, в котором просматривать картинки:

'---------------------------------------------------------------------------------------
' Author : The_Prist(Щербаков Дмитрий)
'          Профессиональная разработка приложений для MS Office любой сложности
'          Проведение тренингов по MS Excel
'          https://www.excel-vba.ru
'          info@excel-vba.ru
'          WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
' Purpose: вставка в ячейку картинки с подгонкой под размеры ячейки
'---------------------------------------------------------------------------------------
Option Explicit
 
Sub InsertPictureByVal()
    Dim sPicsPath As String
    Dim sPicName As String, sPFName As String, sSpName As String
    Dim llastr As Long, lr As Long
    Dim oShp As Shape
    Dim zoom As Double
 
    'выбираем путь к папке с картинками
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выбрать папку с картинками"       'заголовок окна диалога
        .ButtonName = "Выбрать папку"
        .Filters.Clear                              'очищаем установленные ранее типы файлов
        .InitialFileName = ThisWorkbook.Path        'назначаем первую папку отображения
        .InitialView = msoFileDialogViewLargeIcons  'вид диалогового окна
        If .Show = 0 Then Exit Sub               'показываем диалог
        sPicsPath = .SelectedItems(1) 'считываем путь к папке
    End With
    '   если путь надо указать статичный - вместо диалога прописываем одну строку
    '   sPicsPath = "C:images"
 
 
    'проверяем, есть ли слеш после пути к папке
    'если нет - добавляем, иначе путь к картинке будет неверный
    If Right(sPicsPath, 1) <> Application.PathSeparator Then
        sPicsPath = sPicsPath & Application.PathSeparator
    End If
    'определяем последнюю ячейку по столбцу с именами картинок
    llastr = Cells(Rows.Count, 2).End(xlUp).Row
    'если кроме шапки в столбце с именами картинок ничего нет
    If llastr < 2 Then
        Exit Sub
    End If
    'цикл по столбцу с именами картинок
    For lr = 2 To llastr
        sPicName = Cells(lr, 2).Value
        'проверяем наличие картинки в папке
        sPFName = sPicsPath & sPicName
        If Dir(sPFName, 16) <> "" And sPicName <> "" Then
            'в эту ячейку вставляем картинку
            With Cells(lr, 3)
 
                'задаем картинке уникальный адрес,
                'привязанный к адресу ячейки
                sSpName = "_" & .Address(0, 0) & "_autopaste"
                'если картинка уже есть - удаляем её
                Set oShp = Nothing
                On Error Resume Next
                Set oShp = ActiveSheet.Shapes(sSpName)
                If Not oShp Is Nothing Then
                    oShp.Delete
                End If
                On Error GoTo 0
                'вставляем выбранную картинку
                Set oShp = ActiveSheet.Shapes.AddPicture(sPFName, False, True, .Left + 1, .Top + 1, -1, -1)
                'определяем размеры картинки в зависимости от размера ячейки
                zoom = Application.Min(.Width / oShp.Width, .Height / oShp.Height)
                oShp.Height = oShp.Height * zoom - 2
                'переименовываем вставленную картинку(чтобы потом можно было заменить)
                oShp.Name = sSpName
            End With
        End If
    Next
End Sub

Прикладываю пример в формате ZIP-архива, т.к. вместе с самим файлом с кодом я приложил папку images, которая содержит картинки, используемые для вставки в файле. Папка images и сам файл с кодом должны быть распакованы в одну папку.
Скачать файл:

  Вставить картинку в ячейку (366,9 KiB, 2 392 скачиваний)

Обратная задача — сохранение картинок из листа — уже разбиралась мной в этой статье: Как сохранить картинки из листа Excel в картинки JPG

Так же см.:
Как сохранить картинки из листа Excel в картинки JPG
При вставке из VBA картинки на лист ошибка «Метод paste из класса worksheet завершен неверно»
Как скопировать картинку из примечания?
Копирование картинки из примечания


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Понравилась статья? Поделить с друзьями:
  • Excel условие между значениями
  • Excel уменьшить длину строки
  • Excel условие или это или товары
  • Excel урок информатика математика
  • Excel уменьшите данные или