Excel简单搞定怎么按名称查询图片
好酷屋教程网小编为您收集和整理了Excel简单搞定怎么按名称查询图片的相关教程:本篇文章给大家带来了关于excel的相关知识,其中主要整理了怎么按名称查询图片的相关问题,包括了如何将图片从一张工作表插入到另外一张工作表、根据数据表的A列的图片名称,将照片表的照片批量插入到数据表的
本篇文章给大家带来了关于excel的相关知识,其中主要整理了怎么按名称查询图片的相关问题,包括了如何将图片从一张工作表插入到另外一张工作表、根据数据表的A列的图片名称,将照片表的照片批量插入到数据表的B列中等等内容,下面一起来看一下,希望对大家有帮助。
手机如何做表格:点击查看
如何将图片从一张工作表插入到另外一张工作表呢?举个例子。
如下图:
一份工作簿有两张工作表。
存放照片的工作表名为【照片】,需要插入图片的工作表名为【数据】。
现在需要根据【数据】表的A列的图片名称,将【照片】表的照片批量插入到【数据】表的B列中去……
示例动画如下:
……
实现这样的功能,其实3句代码就够了。
代码如下:
Sub InsertPicFromSheet()Dim rngData As Range, rngPicName As RangeFor 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)'如果有找到对应的姓名,则将照片复制粘贴到目标位置NextEnd Sub不过……
以上代码最大的问题在于,没有删除数据表原本就有旧图片,如果重复运行程序,会造成图片累积,为了解决这个问题,我们需要再加上两句代码。
代码修改如下:
Sub InsertPicFromSheet()Dim shp As Shape, rngData As Range, rngPicName As RangeFor Each shp In ActiveSheet.Shapes'删除活动工作表原有照片If shp.Type = 13 Then shp.DeleteNextFor 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)'如果有找到对应的姓名,则将照片复制粘贴到目标位置NextEnd Sub以上代码使用一刀切的方式删除了旧有的图片。
二不过……
尽管这段代码对于VBA基础良好的朋友来说,稍微修改下,已经足够应对大部分的问题,但是,对于小白而言,显然不够友好……
比如说……
1、照片的姓名固定在数据表的A列,实际情况,很可能不是A列,我说的对。
2、放置照片的位置固定于姓名列向右移动1列的单元格,实际情况,当然也很可能不是这样,我说的还是对。
3、代码中将储存照片的工作表固定设置为sheets(“照片”),实际情况,肯定很可能不是这样,我英明……
4、代码未设置单元格的大小以适应图片的大小,我……
代码修改如下:
Sub InsertPicFromSheet2()'ExcelHome VBA编程学习与实践 by:看见星光Dim rngData As Range, rngWhere As Range, cll As RangeDim rngPicName As Range, rngPic As Range, rngPicPaste As RangeDim shp As Shape, sht As Worksheet, bln As BooleanDim strWhere As String, strPicName As String, strPicShtName As StringDim x, y As Long, lngYesCount As Long, lngNoCount As Long'On Error Resume NextSet rngData = Application.InputBox("请选择应插入图片名称的单元格区域", Type:=8)'用户选择需要插入图片的名称所在单元格范围Set rngData = Intersect(rngData.Parent.UsedRange, rngData)'intersect语句避免用户选择整列单元格,造成无谓运算的情况If rngData Is Nothing Then MsgBox "选择的单元格范围不存在数据!": Exit SubstrWhere = InputBox("请输入放置图片偏移的位置,例如上1、下1、左1、右1", , "右1")'用户输入图片相对单元格的偏移位置If Len(strWhere) = 0 Then Exit Subx = Left(strWhere, 1)'偏移的方向If InStr("上下左右", x) = 0 Then MsgBox "你未输入偏移方位。": Exit Suby = Val(Mid(strWhere, 2))'偏移的值Select Case xCase "上"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 SelectstrPicShtName = InputBox("请输入存放图片的工作表名称", , "照片")For Each sht In WorksheetsIf sht.Name = strPicShtName Then bln = TrueNextIf bln True Then MsgBox "未找到保存图片的工作表:" & strPicShtName & vbCrLf & "程序退出。": Exit SubApplication.ScreenUpdating = FalserngData.Parent.SelectFor Each shp In ActiveSheet.Shapes'如果旧图片存放在目标图片存放范围则删除If Not Intersect(rngWhere, shp.TopLeftCell) Is Nothing Then shp.DeleteNextx = rngWhere.Row - rngData.Rowy = 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 ThenSet rngPicPaste = cll.Offset(x, y)'粘贴图片的单元格Set rngPic = rngPicName.Offset(0, 1)'保存图片的单元格lngYesCount = lngYesCount + 1'累加找到结果的个数If lngYesCount = 1 Then'设置放置图片单元格的行高和列宽,以适应图片的大小rngPicPaste.RowHeight = rngPic.RowHeightrngPicPaste.ColumnWidth = rngPic.ColumnWidthEnd IfrngPicName.Offset(0, 1).Copy rngPicPaste'如果有找到对应的姓名,则将照片复制粘贴到目标位置ElselngNoCount = lngNoCount + 1'累加未找到结果的个数End IfEnd IfNextApplication.ScreenUpdating = TrueMsgBox "共处理成功" & lngYesCount & "个对象,另有" & lngNoCount & "个非空单元格未找到对应的图片名称。"End Sub以上代码解决了我们前面说的常见的三点问题……
然……三不过……
还是有一些实际应用中可能出现的问题未解决……
比如说……
1、如何解决图片和数据源的联动性?当数据源图片更改的时候,数据表的图片也自动更改?嗯,除了重新运行程序,也可以使用工作表的激活事件,或者是使用activesheet.chartobjects.add……
2、如何设置图片的大小适应单元格,而不是调整单元格的大小适应图片?
以上就是Excel简单搞定怎么按名称查询图片的详细内容,更多请关注其它相关文章!
以上就是好酷屋教程网小编为您收集和整理的excel相关内容,如果对您有帮助,请帮忙分享这篇文章^_^
本文来源: https://www.haoku5.com/shuma/63f1bdb3dad06f22990c9731.html
相关推荐
热门专题
平板电脑搜狗键盘怎么移动图片(怎么移动搜狗悬浮键盘)
1.怎么移动搜狗悬浮键盘3当出现键盘悬浮的情况,这是因为不小心开启了悬浮键盘的功能,首先在某个聊天界面点击输入框打开键盘。2/3点击键盘的左上角按钮,该按钮图案可能是键盘图案、工具箱图案、搜狗标志图电脑出现选择一个选项疑难解答(电脑出现只有一个选择)
1.电脑出现只有一个选择我的电脑右下角的选择输入法的图标没有了?怎么把它调出来?我的电脑右下角的选择输入法的图标没有了,怎么把它调出来,进入控制面板设置一下就可以了。如图示,在控制面板中进入区域和语三环耳机插电脑(三接头耳机怎么插电脑)
1.三接头耳机怎么插电脑如图所示,电脑耳机插口有两个,每个插孔下面有标识。比如,粉色的下面是个话筒话标志,浅绿色的是耳机🎧,有的电脑上有三个插孔,也就是在中间位置有一个混音插孔,一般是黑色的,就是电脑连接网络受限制是什么原因(电脑联网显示网络受限)
1.电脑联网显示网络受限如提示网络连接受限制或无连接,可按以下方法操作:1、打开电脑“控制面板”,点击“网络连接”,选择本地连接,右键点击本地连接图标后选“属性”,在“常规”选项卡中双击“Inter电脑全屏截图怎么弄(电脑上如何全屏截图)
1.电脑上如何全屏截图 方法一:直接使用键盘中的PrintScrSysrq键实现全屏截图PrintScreenSysRq截图键 使用方法非常简单,只需要按下该键后即可完成全屏截图,然后我们天天飞车电脑壁纸(天天飞车电脑壁纸超清)
1.天天飞车电脑壁纸超清汉字中隔壁的壁字是一个常用字,是墙体和陡峭的山涯、某些物体的表面,可以可以组成的词语有:1、墙壁,一堵墙体的表面。2、戈壁,戈壁滩寸草不生,全是沙石。3、壁画,是在墙壁、山涯电脑怎么抓屏(联想电脑怎么抓屏)
1.联想电脑怎么抓屏截图方法有多种:1、按“PrintScreenSysRq”,(在F12右边)全屏截图,就是抓整个屏幕;2、按Alt+PrintScreenSysRq,截取当前苹果电脑键盘电源(苹果电脑键盘电源灯闪烁是什么意思)
1.苹果电脑键盘电源灯闪烁是什么意思那可能是灯的问题,我的Mac键盘灯是白色的,你去售后问问呗。如果不是键盘脏的话,目测只能是灯的问题了吧,盖膜的应该没什么影响2.苹果电脑键盘指示灯一直闪如果您电脑保修期一般多长时间(机械革命电脑保修期一般多长时间)
1.机械革命电脑保修期一般多长时间按国家规定整机保一年,配件三年保修2.机械革命电脑保修期一般多长时间啊第1步,查询电脑过没过保修期的方法是:第2步,1、翻转电脑,查看底部铭牌上的主机编号并21中关村报价:内存上升CPU下降
英特尔处理器的掉了下来,22nm是主要的降价,跌20-30元;32nmg850,i5-2320降价,5-25元。AMD处理器价格继续下跌。顶32nm//3870kAPUa8-3850是8