Поиск рисунка в ячейке excel

Excel’s lookup functions recently welcomed the addition of XLOOKUP and XMATCH. However, neither these new functions or the existing ones don’t support image lookup. In this guide, we’re going to show you how to make image lookup in Excel.

Download Workbook

Preparing the images

First, we need to place the images into corresponding cells. Make sure that each image is completely inside their cells — there shouldn’t be any overflow. Otherwise, you can only display the part of the image that fits inside of the cell area.

How to make image lookup in Excel 01

Setting up a user interface for image lookup

At this point, we are ready to build an interface for image lookup. In our example, we are going to update an image, based on a value from a dropdown selection.

To make the formulas and references easier to read we will using the names in the table, which were also used to generate named ranges.

  1. Select the cell containing the dropdown
  2. Activate the Data tab in the Ribbon
  3. Click on the Data Validation icon
  4. In the Data Validation dialog, set Allow to List
  5. Select the names in the table under Source
  6. Click OK

The dynamic image

This is the last and the most important step for doing image lookups in Excel. Although the lookup formulas do not support images, some of them can actually support this when the formula is used within an image.

Unfortunately, you can not simply click on an image and type in a formula. However, you can refer a named range, and that named range can contain a formula.

Start by opening the New Name dialog under Formulas > Defined Names.

Give a friendly name to the input, and move onto to the Refers to section to enter the lookup formula. You can use either XLOOKUP or INDEX-MATCH formulas. If your version of Excel doesn’t have support for these formulas, use the INDEX-MATCH combination instead — VLOOKUP won’t work with this method.

Choose one of the following based on your data:

=XLOOKUP(X!$C$2,Data!$B$3:$B$6,Data!$C$3:$C$6)=INDEX(Data!$C$3:$C$6,MATCH(IM!$C$2,Data!$B$3:$B$6,0))

How to make image lookup in Excel 03

Place an image where you want to display your dynamic content. The most important thing here is the size of the image: It needs to fit in the cell.

After placing the image, click on the image and activate the formula bar. Enter the name you created for the lookup formula.

Now, every time the Name dropdown is updated, the image will be updated as well. Excel simply returns an image of the cell into the image object.

0 / 0 / 0

Регистрация: 22.11.2011

Сообщений: 18

1

01.05.2012, 18:39. Показов 15848. Ответов 5


Студворк — интернет-сервис помощи студентам

Проблема такая. Программа (макрос) в EXCEL генерирует несколько документов, в которые автоматически вставляет подпись (ФИО выбирается в форме, в зависимости от этого на листе с образцами подписей в виде рисунков .GIF выбирается нужная подпись и вставляется в документ). Рисунок на листе с образцами меньше размера ячейки, поэтому получается делать так: в буфер просто копируется выбранная по Select ячейка, а затем выбирается на нужном листе нужная ячейка и делается ActiveSheet.Paste. Образцы подписей есть не для всех ФИО в списке, если ячейка не содержит образец подписи — так и не вставляется ничего, ошибка не генерируется.
Но: После вставки рисунок желательно обработать (слегка сместить, повернуть и т.д.), но нужно знать — есть ли он? Как это узнать? Функция IsEmpty ответа не дает (рисунок расположен в отдельном слое). Нужно обратиться к рисунку по его имени (Рисунок1 и т.д.), но непонятно — есть ли он?



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

01.05.2012, 18:39

5

Watcher_1

356 / 162 / 27

Регистрация: 21.06.2011

Сообщений: 350

01.05.2012, 21:16

2

Наличие рисунка можно определить так

Visual Basic
1
if ActiveSheet.Pictures.Count>0 then Msgbox "Рисунок(ки) есть на листе" else Msgbox "Рисунок(ки) нет на листе



0



SlavaRus

1121 / 229 / 36

Регистрация: 15.03.2010

Сообщений: 698

02.05.2012, 09:25

3

Наверное самое простое в момент загрузки рисунка ячейке присвоить булево значение. True рисунок есть, False нет.
Как вариант можно пробежать по всем картинкам и проверить есть ли в нужной ячейке картинка.
Это может занять приличное время если много картинок.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Public Function TestPictCell(Cell As Range) As Boolean
Dim TmpShape As Shape
 
TestPictCell = False
    
    For Each TmpShape In Cell.Worksheet.Shapes
        If TmpShape.Type = msoPicture Then  ' Это картинка?
            If Cell.Address = TmpShape.TopLeftCell.Address Then TestPictCell = True 'адреса равны?
        End If
    Next
End Function



1



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

02.05.2012, 11:19

4

Цитата
Сообщение от BMF
Посмотреть сообщение

После вставки рисунок желательно обработать (слегка сместить, повернуть и т.д.), но нужно знать — есть ли он?

Обрабатывайте, как будто рисунок есть, но включите обработку ошибок (On Error …).



0



0 / 0 / 0

Регистрация: 22.11.2011

Сообщений: 18

06.05.2012, 18:20

 [ТС]

5

Всем большое спасибо!
1 совет( от Watcher) не очеь подходит. И так понятно, что рисунки на листе есть, вопрос- где они (в какой ячейке).
3-й совет (от Казанского) да, после вставки приходится так и делать.
Наиболее подходящий 2-й совет с определением адреса каждого рисунка. Но остались непонятки (я еще не очень в этом разбираюсь…):
Конструкция Cell.Worksheet.Shapes — это означает, что у объекта типа Range есть такой метод?
И вообще, в приведенном примере фунции если я передам ей как аргумент область Range (непример, одну ячейку), поиск рисунков будет вестись только в ней, а не во всем листе?



0



1121 / 229 / 36

Регистрация: 15.03.2010

Сообщений: 698

07.05.2012, 11:08

6

Конструкция Cell.Worksheet.Shapes — это означает, что у объекта типа Range есть такой метод?

Такого метода у Range нет. Объекты Shape лежат на листе, Cell.Worksheet — обращение к листу на котором находится ячейка и соответственно Shapes. В противном случае будет искать в рисунках на активном листе, а ячейка Cell может быть на другом листе.

И вообще, в приведенном примере фунции если я передам ей как аргумент область Range (непример, одну ячейку), поиск рисунков будет вестись только в ней, а не во всем листе?

Функция пробегает по всем объектам Shapes на листе и если это рисунок сравнивает адрес ячейки Cell в параметре фукции с адресом левого верхнего угла рисунка т.к.

Рисунок на листе с образцами меньше размера ячейки…

Проверяет одну ячейку и все рисунки. Если передать в функцию область будет бессмысленный результат. По условию вроде надо было проверять одну ячейку.



1



Предназначение программы: вставка изображений в таблицу Excel, поиск картинок в папке или в Google, экспорт картинок из таблицы в папку.

Основные функции программы:

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

Подробнее — в разделе Справка по программе

Подробные инструкции и описание функционала также можно найти в разделе Справка по программе

Подробные инструкции и описание функционала также можно найти в разделе Справка по программе

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

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

Принцип работы с программой:

  1. Скачиваем файл программы (по ссылке выше), и сохраняем его куда-нибудь себе на диск. (например, на Рабочий Стол)
  2. Запускаем файл надстройки PastePictures.xla(как любой другой файл Excel — двойным щелчком)
  3. Открываем файл с названиями картинок (пример файла вы увидите при тестировании программы)
  4. На панели инструментов программы нажимаем кнопку «Настройки», выставляем нужные параметры
    • На форме настроек выбираем путь к папке, содержащей картинки (изображения)
    • Выставляем необходимые размеры для ячеек с картинками, выбираем первую ячейку на листе с именем файла
    • Указываем номер столбца, в который будут помещены изображения
    • и т.д. и т.п. — настроек там много разных, но разобраться в них совсем не сложно
  5. Нажимаем в меню «Изображения» — «Вставить картинки из папки», и через несколько секунд получаем результат.
  6. Если в исходной таблице — не имена файлов, а ссылки (URL) на картинки в интернете, то используем для запуска пункт меню «Изображения» — «Вставить картинки по ссылкам».

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

Проверьте, есть ли в ячейке изображение с кодом VBA


Проверьте, есть ли в ячейке изображение с кодом VBA

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

1. Откройте рабочий лист, в котором необходимо проверить, существует ли изображение в указанной ячейке, затем нажмите кнопку другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модули. Затем скопируйте и вставьте код VBA в окно кода.

Код VBA: проверьте, содержит ли ячейка изображение в Excel

Sub CellHasPicture()
    Dim xRg As Range
    Dim xShape As Shape
    Dim xFlag As Boolean
    On Error Resume Next
    Set xRg = Application.InputBox("Please enter the cell address:", "KuTools For Excel", Selection.Address, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    xFlag = False
    For Each xShape In ActiveSheet.Shapes
        If xShape.TopLeftCell.Address = xRg.Address Then
            xFlag = True
        End If
    Next
    If xFlag Then
        MsgBox "Image exists!"
    Else
        MsgBox "Image does not exist"
    End If
End Sub

3. Press the F5 key to run the code. In the popping up Kutools for Excel dialog box, please enter the cell which you want to check if it contains a picture, and then click the OK button. See screenshot:

4. Then a dialog box will pop up as below screenshot shown if a picture exists or not in the specified cell.


Related Articles:

  • How to automatically change all pictures to move and size with cells in Excel?
  • How to center a picture in an Excel cell?
  • How to insert image or picture dynamically in cell based on cell value in Excel?
  • How to enlarge image when click on it in Excel?

The Best Office Productivity Tools

Kutools for Excel Solves Most of Your Problems, and Increases Your Productivity by 80%

  • Reuse: Quickly insert complex formulas, charts and anything that you have used before; Encrypt Cells with password; Create Mailing List and send emails…
  • Super Formula Bar (easily edit multiple lines of text and formula); Reading Layout (easily read and edit large numbers of cells); Paste to Filtered Range
  • Merge Cells/Rows/Columns without losing Data; Split Cells Content; Combine Duplicate Rows/Columns… Prevent Duplicate Cells; Compare Ranges
  • Select Duplicate or Unique Rows; Select Blank Rows (all cells are empty); Super Find and Fuzzy Find in Many Workbooks; Random Select…
  • Exact Copy Multiple Cells without changing formula reference; Auto Create References to Multiple Sheets; Insert Bullets, Check Boxes and more…
  • Extract Text, Add Text, Remove by Position, Remove Space; Create and Print Paging Subtotals; Convert Between Cells Content and Comments
  • Super Filter (save and apply filter schemes to other sheets); Advanced Sort by month/week/day, frequency and more; Special Filter by bold, italic…
  • Combine Workbooks and WorkSheets; Merge Tables based on key columns; Split Data into Multiple Sheets; Batch Convert xls, xlsx and PDF
  • More than 300 powerful features. Supports Office / Excel 2007-2021 and 365. Supports all languages. Easy deploying in your enterprise or organization. Full features 30-day free trial. 60-day money back guarantee.

kte tab 201905

Read More… Free Download… Purchase… 


Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier

  • Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
  • Open and create multiple documents in new tabs of the same window, rather than in new windows.
  • Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!

officetab bottom

Read More… Free Download… Purchase… 

Comments (0)


No ratings yet. Be the first to rate!

 

ДЛД

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

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

Добрый день! В ячейке xls есть рисунок. Как через vba узнать его Item чтобы потом обратиться к нему через Index, например ActiveSheet.Shapes(4)?.

 

Андрей VG

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

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

Excel 2016, 365

#2

09.05.2018 10:50:49

Цитата
ДЛД написал:
В ячейке xls есть рисунок

Не верное утверждение. В отличии от Word, в ячейке не размещаются рисунки. Они лежат поверх неё. Следовательно это у рисунка нужно спрашивать — над какой ячейкой он лежит. BottomRightCell и TopLeftCell в помощь.

 

БМВ

Модератор

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

Excel 2013, 2016

Андрей VG, Андрей, приветвую, с Праздником. Опередили чуток.

ДЛД, по сути Вам придется сперва перебрать все объекты и проверить на то, что они находятся в области целевой ячейки, и если да, то получить , ID, имя …  и тогда с ним работать.

По вопросам из тем форума, личку не читаю.

 

ДЛД

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

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

Андрей VG

, скажите чтобы узнать Item рисунка «лежащего над ячейкой» — правильным ли будет алгоритм:
— узнать Count рисунков на листе
— для КАЖДОГО рисунка проверить на совпадение TopLeftCell с адресом ячейки, примерно
If Cells(i, «B»).Address = ActiveSheet.Pictures(1).TopLeftCell.Address Then
— если совпало — это и будет нужный Item ?

 

Андрей VG

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

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

Excel 2016, 365

#5

09.05.2018 11:18:17

В принципе, видится такой алгоритм.
У Worksheet есть скрытая коллекция Pictures
Циклом For Each nextPict пробегаемся по этой коллекции и записываем в словарь адрес TopLeftCell и BottomRightCell ячеек как ключ словаря, а как значение nextPict.Index
Тогда уже в цикле по ячейкам просто проверяем, есть адрес очередной ячейки в словаре, если есть, то берём индекс рисунка в коллекции Pictures
Как то так. Тут смысл задачи нужен, чтобы понять — можно ли что-то упростить и ускорить.

Цитата
БМВ написал:
Опередили чуток.

Привет, Михаил.
Всех с Днём Победы, мирного неба!

 

ДЛД

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

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

Андрей VG

, «смысл задачи» такой. На листе (только в одном столбце «B») в ячейках есть текст и рисунки, но имеются также пустые ячейки в этом столбце. Циклом For удаляются пустые строки, но только те, над которыми не «лежат» рисунки. Через Item я хотел узнать «габариты» рисунка (BottomRightCell.Row) чтобы под ним не удалять строки

 

Андрей VG

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

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

Excel 2016, 365

Ну, тогда можно чуть по другому.
Формируете целочисленный массив с числом элементов равный числу строк в UsedRange. Удобнее всего индексацию в массиве сделать по номеру первой последней строки в UsedRange.
По умолчанию элементы массива будут равны 0.
Пробегаете по коллекции Worksheet.Pictures (так как у вас рисунки лежат строго над одной ячейкой, то из nextPict.TopLeftCell.Row получаете индекс строки ячейке в том массиве записываете 1.
После пробега по коллекции в массиве будут отмечены строки, содержащие рисунки. Начинаете удалять строки, индексы которых в массиве дают элементы, содержащие 0.
Как-то так.

 

ДЛД

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

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

Андрей VG

, спасибо. Буду пытаться.

 

ДЛД

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

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

Поставленную задачу (не ту что в заголовке) можно решить так: сначала удалить ВСЕ строки с пустыми ячейками в столбце «B», а потом добавить строки ТОЛЬКО «под» рисунками.

 

ДЛД

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

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

Почему-то не загрузился файл
Sub Insert_Row()
Dim pCount%, i%, s&, t&
pCount = ActiveSheet.Pictures.Count
For i = pCount To 1 Step -1
   s = ActiveSheet.Shapes(i).TopLeftCell.Row
   t = ActiveSheet.Shapes(i).BottomRightCell.Row
   Rows(s & «:» & t).Insert
    ActiveSheet.Shapes(i).Cut
    ActiveSheet.Range(«B» & s).PasteSpecial
Next
Range(«A1»).Select
End Sub

 

vikttur

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

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

#11

10.05.2018 22:54:25

Цитата
ДЛД написал: Почему-то не загрузился файл

Размер какой?

Код в сообщении нужно оформлять с посмощью кнопки <…>. Попробуйте, не кусается.

Понравилась статья? Поделить с друзьями:
  • Поиск рисунка в word
  • Поиск решений в excel презентация
  • Поиск решения это надстройка для microsoft excel
  • Поиск решений в excel не находит оптимального решения
  • Поиск решения формулы в excel