Excel简单搞定怎么按名称查询图片
本篇文章给大家带来了关于excel的相关知识,其中主要整理了怎么按名称查询图片的相关问题,包括了如何将图片从一张工作表插入到另外一张工作表、根据数据表的A列的图片名称,将照片表的照片批量插入到数据表的B列中等等内容,下面一起来看一下,希望对大家有帮助。
相关学习推荐:excel教程
如何将图片从一张工作表插入到另外一张工作表呢?举个例子。
如下图:
一份工作簿有两张工作表。
存放照片的工作表名为【照片】,需要插入图片的工作表名为【数据】。
现在需要根据【数据】表的A列的图片名称,将【照片】表的照片批量插入到【数据】表的B列中去……
示例动画如下:
……
实现这样的功能,其实3句代码就够了。
代码如下:
Sub InsertPicFromSheet() Dim rngData As Range, rngPicName As Range For Each rngData In Range("a2", Cells(Rows.Count, 1).End(3)) Set rngPicName = Sheets("照片").Cells.Find(rngData.Value, , , xlWhole) '使用Find方法在照片表完整匹配姓名 If Not rngPicName Is Nothing Then rngPicName.Offset(0, 1).Copy rngData.Offset(0, 1) '如果有找到对应的姓名,则将照片复制粘贴到目标位置 Next End Sub
不过……
以上代码最大的问题在于,没有删除数据表原本就有旧图片,如果重复运行程序,会造成图片累积,为了解决这个问题,我们需要再加上两句代码。
代码修改如下:
Sub InsertPicFromSheet() Dim shp As Shape, rngData As Range, rngPicName As Range For Each shp In ActiveSheet.Shapes '删除活动工作表原有照片 If shp.Type = 13 Then shp.Delete Next For Each rngData In Range("a2", Cells(Rows.Count, 1).End(3)) Set rngPicName = Sheets("照片").Cells.Find(rngData.Value, , , xlWhole) '使用Find方法在照片表的完整匹配姓名 If Not rngPicName Is Nothing Then rngPicName.Offset(0, 1).Copy rngData.Offset(0, 1) '如果有找到对应的姓名,则将照片复制粘贴到目标位置 Next End Sub
以上代码使用一刀切的方式删除了旧有的图片。
二不过……
尽管这段代码对于VBA基础良好的朋友来说,稍微修改下,已经足够应对大部分的问题,但是,对于小白而言,显然不够友好……
比如说……
1、照片的姓名固定在数据表的A列,实际情况,很可能不是A列,我说的对。
2、放置照片的位置固定于姓名列向右移动1列的单元格,实际情况,当然也很可能不是这样,我说的还是对。
3、代码中将储存照片的工作表固定设置为sheets(“照片”),实际情况,肯定很可能不是这样,我英明……
4、代码未设置单元格的大小以适应图片的大小,我……
代码修改如下:
Sub InsertPicFromSheet2() 'ExcelHome VBA编程学习与实践 by:看见星光 Dim rngData As Range, rngWhere As Range, cll As Range Dim rngPicName As Range, rngPic As Range, rngPicPaste As Range Dim shp As Shape, sht As Worksheet, bln As Boolean Dim strWhere As String, strPicName As String, strPicShtName As String Dim x, y As Long, lngYesCount As Long, lngNoCount As Long 'On Error Resume Next Set rngData = Application.InputBox("请选择应插入图片名称的单元格区域", Type:=8) '用户选择需要插入图片的名称所在单元格范围 Set rngData = Intersect(rngData.Parent.UsedRange, rngData) 'intersect语句避免用户选择整列单元格,造成无谓运算的情况 If rngData Is Nothing Then MsgBox "选择的单元格范围不存在数据!": Exit Sub strWhere = InputBox("请输入放置图片偏移的位置,例如上1、下1、左1、右1", , "右1") '用户输入图片相对单元格的偏移位置 If Len(strWhere) = 0 Then Exit Sub x = Left(strWhere, 1) '偏移的方向 If InStr("上下左右", x) = 0 Then MsgBox "你未输入偏移方位。": Exit Sub y = Val(Mid(strWhere, 2)) '偏移的值 Select Case x Case "上" Set rngWhere = rngData.Offset(-y, 0) Case "下" Set rngWhere = rngData.Offset(y, 0) Case "左" Set rngWhere = rngData.Offset(0, -y) Case "右" Set rngWhere = rngData.Offset(0, y) End Select strPicShtName = InputBox("请输入存放图片的工作表名称", , "照片") For Each sht In Worksheets If sht.Name = strPicShtName Then bln = True Next If bln <> True Then MsgBox "未找到保存图片的工作表:" & strPicShtName & vbCrLf & "程序退出。": Exit Sub Application.ScreenUpdating = False rngData.Parent.Select For Each shp In ActiveSheet.Shapes '如果旧图片存放在目标图片存放范围则删除 If Not Intersect(rngWhere, shp.TopLeftCell) Is Nothing Then shp.Delete Next x = rngWhere.Row - rngData.Row y = rngWhere.Column - rngData.Column '偏移的纵横坐标 For Each cll In rngData '遍历选择区域的每一个单元格 strPicName = cll.Text '图片名称 If Len(strPicName) Then '如果单元格存在值 Set rngPicName = Sheets(strPicShtName).Cells.Find(cll.Value, , , xlWhole) '使用Find方法在照片表完整匹配姓名 If Not rngPicName Is Nothing Then Set rngPicPaste = cll.Offset(x, y) '粘贴图片的单元格 Set rngPic = rngPicName.Offset(0, 1) '保存图片的单元格 lngYesCount = lngYesCount + 1 '累加找到结果的个数 If lngYesCount = 1 Then '设置放置图片单元格的行高和列宽,以适应图片的大小 rngPicPaste.RowHeight = rngPic.RowHeight rngPicPaste.ColumnWidth = rngPic.ColumnWidth End If rngPicName.Offset(0, 1).Copy rngPicPaste '如果有找到对应的姓名,则将照片复制粘贴到目标位置 Else lngNoCount = lngNoCount + 1 '累加未找到结果的个数 End If End If Next Application.ScreenUpdating = True MsgBox "共处理成功" & lngYesCount & "个对象,另有" & lngNoCount & "个非空单元格未找到对应的图片名称。" End Sub
以上代码解决了我们前面说的常见的三点问题……
然……三不过……
还是有一些实际应用中可能出现的问题未解决……
比如说……
1、如何解决图片和数据源的联动性?当数据源图片更改的时候,数据表的图片也自动更改?嗯,除了重新运行程序,也可以使用工作表的激活事件,或者是使用activesheet.chartobjects.add……
2、如何设置图片的大小适应单元格,而不是调整单元格的大小适应图片?
相关学习推荐:excel教程
以上是Excel简单搞定怎么按名称查询图片的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如果在打开一份需要打印的文件时,在打印预览里我们会发现表格框线不知为什么消失不见了,遇到这样的情况,我们就要及时进行处理,如果你的打印文件里也出现了此类的问题,那么就和小编一起来学习下边的课程吧:excel打印表格框线消失怎么办?1、打开一份需要打印的文件,如下图所示。 2、选中所有需要的内容区域,如下图所示。 3、单击鼠标右键,选择“设置单元格格式”选项,如下图所示。 4、点击窗口上方的“边框”选项,如下图所示。 5、在左侧的线条样式中选择细实线图样,如下图所示。 6、选择“外边框”

在日常办公中经常使用Excel来处理数据,时常遇到需要使用“筛选”功能。当我们在Excel中选择执行“筛选”时,对于同一列而言,最多只能筛选两个条件,那么,你知道excel同时筛选3个以上关键词该怎么操作吗?接下来,就让小编为大家演示一遍。第一种方法是将条件逐步添加到筛选器中。如果要同时筛选出三个符合条件的明细,首先需要逐步筛选出其中一个。开始时,可以先根据条件筛选出姓“王”的员工。然后单击【确定】,接着在筛选结果中勾选【将当前所选内容添加到筛选器】。操作步骤如下所示。 同样,再次分别执行筛选

在我们日常的工作学习中,从他人处拷贝了Excel文件,打开进行内容添加或重新编辑后,再保存的有时候,有时会提示出现兼容性检查的对话框,非常的麻烦,不知道Excel软件,可不可改为正常模式呢?那么下面就由小编为大家带来解决这个问题的详细步骤,让我们一起来学习吧。最后一定记得收藏保存。1、打开一个工作表,在工作表的名称中显示多出来一个兼容模式,如图所示。2、在这个工作表中,进行了内容的修改后保存,结果总是弹出兼容检查器的对话框,很麻烦看见这个页面,如图所示。 3、点击Office按钮,点另存为,然

e我们经常会用excel来制作一些数据表之类的,有时在输入参数数值时需要对某个数字进行上标或下标,比如数学公式就会经常用到,那么excel下标怎么打出来呢?我们一起来看看详细操作步骤:一、上标方法:1、首先Excel中输入a3(3为上标)。2、选中数字“3”,右键选择“设置单元格格式”。3、点击“上标”,然后“确定”即可。4、看,效果就是这样的。二、下标方法:1、与上标设置方法类似,在单元格中输入“ln310”(3为下标),选中数字“3”,右键选择“设置单元格格式”。2、勾选“下标”,点击“确定

在处理数据时,有时我们会遇到数据包含了倍数、温度等等各种符号的时候,你知道excel上标应该如何设置吗?我们在使用excel处理数据时,如果不会设置上标,这可是会让我们的很多数据在录入时就会比较麻烦。今天小编就为大家带来了excel上标的具体设置方法。1.首先,让我们打开桌面上的MicrosoftOfficeExcel文档,选择需要修改为上标的文字,具体如图所示。2.然后,点击右键,在点击后出现的菜单中,选择“设置单元格格式”选项,具体如图所示。3.接下来,在系统自动弹出来的“单元格格式”对话框

大部分用户使用Excel都是用来处理表格数据的,其实Excel还有vba程序编写,这个除了专人士应该没有多少用户用过此功能,在vba编写时常常会用到iif函数,它其实跟if函数的功能差不多,下面小编给大家介绍下iif函数的用法。Excel中SQL语句和VBA代码中都有iif函数。iif函数和excel工作表中的IF函数用法相似,执行真假值判断,根据逻辑计算的真假值,返回不同结果。IF函数用法是(条件,是,否)。VBA中的IF语句和IIF函数,前者IF语句是控制语句可以根据条件执行不同的语句,后者

在软件的学习中,我们习惯用excel,不仅仅是因为需要方便,更因为它可以满足多种实际工作中需要的格式,而且excel运用起来非常的灵活,有种模式是方便阅读的,今天带给大家的就是:excel阅读模式在哪里设置。1、打开电脑,然后再打开Excel应用,找到目标数据。2、要想在Excel中,设置阅读模式,有两种方式。第一种:Excel中,有大量的便捷处理方式,分布在Excel中布局中。在Excel的右下角,有设置阅读模式的快捷方式,找到十字标志的图案,点击即可进入阅读模式,在十字标志的右边有一个小的三

1、打开PPT,翻页至需要插入excel图标的页面。点击插入选项卡。2、点击【对象】。3、跳出以下对话框。4、点击【由文件创建】,点击【浏览】。5、选择需要插入的excel表格。6、点击确定后跳出如下页面。7、勾选【显示为图标】。8、点击确定即可。
