Excel动态引用图片或照片的三种方法

一、将公式定义成名称进行引用

1、设计一个表格“名单”,保存各项信息,包括照片,如下:

2、切换到公式选项卡,点击名称管理器,如下:

3、新建一个名称“照片”,在“照片”的引用位置输入公式如下:

=INDEX(名单!$L$2:$L$4,MATCH(员工查询表!$B$4,名单!$A$2:$A$4,0))

或者

=OFFSET(名单!$A$1,MATCH(员工查询表!$B$4,名单!$A$2:$A$4,0),11)

说明:不能使用vlookup公式,这里必须使用绝对引用$符号,不然定义的名称的引用位置会变化。若图片需要根据单元格中填写的行号变动,可以在MATCH第一个参数中使用INDIRECT或OFFSET公式,如:=INDEX(名单!$L$2:$L$4,MATCH(INDIRECT("名单!$A$"&名单!$J$6),名单!$A$2:$A$4,0))。

4、复制一张图片到Excel的单元格中,选中该图片,将编辑栏的公式编辑为“=照片”,这样,只要修改B4单元格中数据,就会显示相应照片,如下:

说明:此方法引用的照片,只能根据“员工查询表!$B$4”中的内容进行改变,其他所有引用此名称的照片都是如此。

5、图片的裁剪、填充、线条颜色等属性可以设置图片,如下:

二、使用VBA实现上面图片名称的公式添加

Sub Excel中添加图片引用的名称()

'原表有有编号和编号所在行的图片,此代码实现新表根据原表编号动态显示图片

'新表每行插入空白图片,第二次为图片设置图片引用名称

' "=INDEX(名单!R2C12:R4C12,MATCH(名单!R6C11,名单!R2C1:R4C1,0))"

    On Error Resume Next

    Dim picName As String

    picName = "图片"    '公式名称

    Dim strPicRng As String, strPicId As String, strPicIdRng As String

    strPicIdRng = "名单!R2C1:R4C1"    '原图片根据编号变化,编号所在列

    strPicRng = "名单!R2C12:R4C12"    '原图片所在列

    strPicId = "Sheet3!R"    '新表中的编号所在单元格

    Dim i As Integer

    Dim startRow As Integer, endRow As Integer

    Dim oldPic As Shape

    Dim newPicColNum As Integer, newPicIdCol As Integer

    newPicIdCol = 1    '新图片编号所在列号

    newPicColNum = 2    '新图片所在列号

    startRow = 2    '新图片开始行号

    endRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row    '新表中图片结束行号

    For i = startRow To endRow    '添加公式名称,在新的列中添加图片,并将图片的表达式设置为名称引用

        '定义图片名称

        ActiveWorkbook.Names.Add Name:=picName & i, RefersToR1C1:="=INDEX(" & _

                                                                  strPicRng & ",MATCH(" & strPicId & i & "C" & newPicIdCol & "," & strPicIdRng & ",0))"

        Set oldPic = getCellShape(ActiveSheet.Cells(i, newPicColNum))    '获取单元格区域照片

        If oldPic Is Nothing Then    '单元格区域无照片

            '添加新图片

            ActiveSheet.Cells(i, newPicColNum).CopyPicture

            ActiveSheet.Cells(i, newPicColNum).Select

            ActiveSheet.Paste

            Selection.ShapeRange.Name = "pic" & i

            '            ActiveSheet.Shapes.Range(Array("pic" & i)).Select

            Selection.Formula = "=" & picName & i    '图片名称对应公式必须有图片才行

        Else    '有照片就设置表达式为引用名称

            oldPic.Name = "pic" & i

            oldPic.Select

            Selection.Formula = "=" & picName & i    '图片名称对应公式必须有图片才行

        End If

    Next

End Sub

Function getCellShape(cellRng As Range) As Shape

'获取当前Sheet表格cellRng单元格区域上的图片

    Dim picShape As Shape

    For Each picShape In ActiveSheet.Shapes

        If picShape.Type = msoPicture Then

            If Not Application.Intersect(picShape.TopLeftCell, cellRng) Is Nothing Then

                Set getCellShape = picShape

                Exit Function

            End If

        End If

    Next

    Set getCellShape = Nothing

End Function

三、vba根据新表编号从旧表复制图片到新表列

Sub vba将Excel原表编号对应行图片复制到新表()

    Dim btnShape As Shape

    For Each btnShape In ActiveSheet.Shapes

        If Not btnShape.Name Like "Button*" Then btnShape.Delete

    Next

    Dim startRow As Integer, endRow As Integer, i As Integer

    startRow = 2: endRow = ActiveSheet.[A65535].End(xlUp).Row

    Dim findRng As Range

    Dim rngTop As Variant, rngHeight As Variant

    Dim picShape As Shape

    For i = startRow To endRow

        With Sheets("名单")

            Set findRng = .Range("A:A").Find(ActiveSheet.Range("A" & i), lookat:=xlWhole)

            If Not findRng Is Nothing Then

            rngTop = findRng.Top

            rngHeight = findRng.Height

            For Each picShape In .Shapes

              If picShape.Top > rngTop - 5 And picShape.Top + picShape.Height < rngTop + rngHeight + 5 Then

              picShape.Copy

              ActiveSheet.Range("C" & i).Select

              ActiveSheet.Paste

              End If

            Next

            End If

        End With

    Next

End Sub

欢迎交流分享,联系qq:329876601

Excel百宝箱 9.0 破解版 批量导入图片等200种功能 Excel2007 Excel百宝箱2012是强大的制表插件,当安装百宝箱后,如果您使用Excel 2003,则将产生【百宝箱】菜单,包括100多个子菜单;如果您使用Excel 2007或者2010,将产生【百宝箱】和【字符分离】两个功能区选项卡。另外,在“函数向导”对话框中会生成28个新的函数,用于扩展Excel的计算功能。且所有功能都通用于Excel 2002、2003、2007和2010。  Excel百宝箱 79个菜单工具的功能介绍如下: 功能名称功能介绍 【公农双历查询】生成多功能日历,可以查询所有节、假日和农历 【高级定位】多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符,在8.0版本开始还加了按格式定位、按格式计算功能。例如选择并计算红色区域,或者选择字号为20、字体为宋体的区域,再如选择加粗且倾斜的区域等等 【选区背景着色】将选择的行进行颜色标示,以突出当前行,有利于数据查看。可以随心所欲地定义颜色,还可以自由调整颜色的深浅。本工具相对于同类工具有不破坏背景色、条件格式、复制粘贴和撤消功能之优点 【环境设置】设置工作表界面视图,控制各项目的显示与隐藏 【修改文件时间】随心所欲修改文件的创建时间,包括年月日时分秒 【按颜色汇总】按背景色对选区的数据合类合计 【反向选择】选择当前区域中未选择的区域 【保护公式】保护当前工作表所有公式,不让人看到公式本身,只能看到公式结果。 【生成千年日历】工单元格中生成千年日期。默认显示本月的日历,可以自由调整年月。 【生成斜线表头】Excel没有Word那样的斜线表头工具,本工具可以弥补此不足。包括单线、双线可选 【百家姓与字母序列】运行后可以在单元格中进行百家姓与字母填充,提升录入速度 【一键隐藏非使用区】对空白区域瞬间隐藏起来。可以选择作用对象是当前表还是所有工作表。恢复时也只要瞬间完成(不到1秒) 【文本、数字分离与计算】批量地对单元格进行文本、数字分离,还可以计算取出的表达式 【删除空单元格】删除选区中空单元格,下面的单元向上移动 【按列倒置】将选区中每列的数据倒序存放 【按行倒置】将选区中每行的数据倒序存放 【转置选区】将选区转置一个方向存放,即纵向转换成横向 【字母大小写转换】将选区的英文单词在大写与小写间切换,也可以首字母大写其它小写 【小写金额转大写】将小写金额批量转换成大写 【大写金额转小写】将大写金额批量转换成小写 【区域数据加密】对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。第二次执行时可以恢复数据 【简体转繁体】将简体字批量转换成繁体 【繁体转简体】将繁体字批量转换成简体 【根据工资计算钞票】根据员工的工资计算需要多少张100元、50元......1元的钞票,可以批量计算。发现金工资的财务工作者必备 【隔行插入行】对工作表隔行插入行,或者隔列插入列,其中行数可以自定义 【折分工作簿】将指定工作簿的每个工作表拆分成单独的工作簿,新工作簿名称等于原工作表名称 【工作表折分】将当前工作表的数据按条件拆分成多个工作表,可以用任意列的数据做为拆分条件 【合并工作簿】将指文件夹中所有工作簿中所有工作表数据合并起来。有两种合并方式 【文本与数值互换】将选区的数字瞬间转换成文本;将选区的文本型数字瞬间转换成数值 【复选框工具】批量生成复选框(方框中打勾的工具),批量选定、取消复选框。且可以定义复框是否可以打印、与单元格链接等等 【报表分栏工具箱】Word有分栏功能,本工具使Excel也具有同栏功能。当数据列数太少浪费打印纸张时,可以用本工具分成多栏再打印 【制作工资条】瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条头的行数 【删除工资条恢复明细表】删除前一工具生成的工资条头,恢复明细表 【建立分页小计】将每页数据建立小计和累计,且自动分页,小计和累计在每页最末处 【删除分页小计】删除小计与累计,恢复明细表 【合并到选区】将一个单元格的值合到一个区域中去,可以插入到原字符之前也可以插入到原字符之后 【可还原的合并居中】合并居中数据,可以保留合并前的所有数据。而且取消合并后可以还原数据,强过Excel自带的合并 居中多倍 【合并列中相同值】对一列中相同且相邻的数据区域进行合并居中 【取消合并还原合并数据】对一列中合并后的单元格取消合并,且恢复合并前所有数据 【合并数据并复制】可以将一个区域的数据直接复制到一个单元格中 【建立图片目录】对指定文件夹下所有图片(GIF、PNG、JPG、JPEG四种格式)建立目录 ,包括名称目录及批量导入图片,可以自由设置其大小 【批量导入图片(精确匹配)】根据选区的文件名瞬间导入所有同名图片到单元格,可以自由设定图片的大小及格式 【批量导入图片(模糊匹配)】与上一工具基本一致,只是在确定图片名称时可以糊模匹配。即选择“张”可以导入所有姓张的人的照片 【批量导入图片到批注】批量地将图片导入到批注中,可以自由设定图片显示大小 【添加个性批注】Excel本身只有方形批注,本工具可以生各种花样的变体批注,美观大方 【图片查询工具】对工作表中插入的图片进行查询,像引用产品单价一样方便、直观 【删除所有图片】删除当前表所有图片 【批量导出图片】将当前表所有嵌入的图片导出到硬盘中成为JPG图片 【保存为图片】将选区或者工作表中的图片导出成JPG文件或者PNG图片 【生成个性化批注】Excel本身只有方形批注,本工具可以生各种花样的变体批注,美观大方 【插入GIF动画】将GIF动画插入到工作表中播放,可以随意定制GIF的大小和位置 【插入FLASH动画】将Flash动画嵌入到工作表中,并播放,可以随意定制Flash动画的显示大小和位置。动画嵌入工作表中,删除FLASH原文件不影响Excel中的效果 【提取选区不重复值】将选择区域的数据,置于当前列中,忽略重复值 【清除列中重复值】将选择中重复出现的数据删除(提供保留第一次出现还是最后一次出现的数据 的选择机会,也提供是否对删除数据加背景色突出的选择机会) 【标示重复值】将重复出现的数据用 颜色标示出来,不同值使用不同颜色,通常用于学号、身份证号、订单号等等有唯一性质的数据检查 【禁止录入重复值】对指定的列进行录入控制,输入重复数据时提示有重复以及重复次数 【删除空白单元格所在行】输入1则删除空白行(整行空白),输入2则删除空白单元格所在行 【筛选唯一值】以选择区域左边一列为条件进行唯一值筛选,输入1则删除重复值所在行,输入2则隐藏重复值所在行 【建文件目录】对指定文件夹中的文件建立目录,且生成链接,单击可以打开对应的文件 【建工作表目录】对当前工作簿的所有工作表建立目录与编号,且生成链接,单击可以打开工作表 【批量新建/复制工作表】批量新建或者复制工作表,可以瞬间建立/复制1到255个。还可以在新建或复制时全自动命名 【批量加解密】批量对工作表进行加密码、解除密码(只能批量解除自己设置的密码) 【破解工作表/簿密码】可以破解工作表密码和工作簿密码。在不知道密码的前提下找回密码 【批量命名文件】对指定文件夹下所有文件进行重命名。可以限定文件类型或者对所有类型文件进行命名。可以在原文件名前或者后插入新名称,也可以替换原名称 【工作表批量命名】对活动工作簿中所有工作表进行批量地改名 【打印当前页】仅仅打印当前鼠标所在页,忽略其它数据 【双面打印】打印双面小册子专用 【打印底端标题】将最后几行做为底端标题进行打印,弥补Excel只有顶端标题之不足 【生成系统图标】VBA编程人员常用的工具。可以查询Excel内部图标的ID号 【获取内置命令ID】VBA编程人员常用的工具。可以查询Excel内部命令的ID号 【按颜色筛选】让Excel 2003也可以按背景色筛选数据,2007或者2010用户不需要使用 【按颜色排序】让Excel 2003也可以按背景色筛选排序,2007或者2010用户不需要使用 【修复Excel】当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态 【破解VBA密码】将有密码的VBA代码破解,直接打开即可修改代码。包括工程不可查看类的破解 【多区域复制】突破Excel的限制,可以对选择的多个区域进复制与粘贴,在右键菜单中调用 【返回首页】配合“建立工作表目录”工具使用,可以在任何工作表中瞬间返回第一个工作表 Excel百宝箱 26个函数功能介绍如下: 函数名称功能介绍 sumifcol按颜色进行条件求和。有三个区域引用参数,其中第三参数为可选参数。第一参数为参照区域,第二参数为颜色条件,第三参数为求和区域,即第一参数中颜色与第二参数相同,则将对应的第三参数的单元格进行求和。如果省略第三参数则对第一参数求和 AVER评分函数。计算参数区域中去除最大值与最小值之再求平均,参数个数有255个(Excel2003中是1到30个) hesum左右合并再求和。将1/2类型的数字换算成1.5类型数据后再求和;若为12则按12计算,若为1/2则按1.5计算 NOWW不改变的当前时间。不需要参数,输入的时间表示现在的时间,但不随时间改变而改变 SFZ身份证相关信息函数。第一参数为引用,第二参数输入“DQ”取返回地区,输入“XB”则返回性别,输入“SR”则返回生日。忽略第二参数则默认显示地区 Sheet创建工作表目录函。一个参数,输入工作表地址即返回工作表名,单击该工作表名进入对应的工作表 File用于创建带链接的文件目录,有三个参数,第一参数指定路径,第二参数定指文件类型。第三参数指定编号(数量) 大写将阿拉伯数字转为人民币金额大写。仅需要一个参数,即单元格引用 批注提取批注中的文字。只有一个参数,即单元格引用 合并将区域字符合并。第一参数为分割符,第二参数为引用区域。可以用""表示不使用分割符。第三参数开始为引用区域,可以有1到254个区域(Excel2003中是1到29个)。也还可以直接用文本做参数 取数分离数字与文本。第一参数为单元格;第二参数为可选参数,当为0或者省略时表示取出数字;为1时表示排除数字;为2时表示取出数字与运算符;为3则提取数字与运算符且计算结果 唯一值返回不重复值。可以对1到253(Excel2003中是1到28个)个区域取唯一值;前三个为必选参数,其余为可选参数。第一参数为ROW时先行后列取值,为COLUMN时先列后行(不分大小写),第三参数开始为引用区域 消除空值消除空值函数。可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号 颜色求和按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域 颜色计数按背景颜色计算区域中同背景之数据个数。第一参数为参照值。第二参数为计数区域 工作表取工作表名。一个参数,输入工作表地址即返回工作表名 数字与“大写”函数相反,将大写字符转换为阿拉伯数字 分割取数按分割符取数。第一参数为单元格,第二参数表示取第N个,第三个参数表示分割符 共有项返回两个区域共有项目。前两个参数为区域,第三参数为序号 不同项返回第一区域中有而第二区域没有的项目。前两个参数是区域,第三参数为序号 公式公式函数。提取单元格中的公式,只需要一个参数,单元格引用 计算计算函数。计算单元格中的表达式,如单元格中为“456+2”,则计算其结果458。只需要一个参数,单元格引用 公式长度计算单元格中公式的长度,一个参数即单元格引用 排名中国式排名函数。即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用 排序按出现次数排序。对引用数据将出现次数多的字符串排列在第一位,然后依次降序排列所有数据。有两个参数,第一参数为数据区域引用,第二参数为名次,可使用ROW(a1) 替换替换第N次出现的字符串的函数。第一参数为引用,第二参数为待替换字符串,第三参数为新字符串,第四参数用于指定替换第几次出现的字符,范围在1到256之间 重复判断指定区域中是否有重复单元格的函数只有一个参数即为引用,结果为True时表示有重复,否则无重复   对于无法安装的朋友请注意以下4点 : 一:必须是完整版OFFICE,不能是绿色版、精简版,它们不支持COM加载宏 二:必须关闭Excel状态下安装或者删除工具,安装后重启Excel即可 三:如果是VISTA或WIN 7,必须以管理员用户安装,且从控制面板中关掉用户帐户控制(UAC)功能 四:如果您装了其它的EXCEL工具,请先关掉它,它们有可能删除本工具的菜单
Java作为一种高级编程语言,具有强大的数据操作能力。在实际的开发过程中,我们经常需要将数据导出到Excel表格中,以方便用户进行查看和操作。下面介绍Java导出Excel三种方法方法一:POI框架 POI是Java中操作Excel的重要框架,它能够快速的读写Excel文档,各种类型的Excel文档都可以存取,使Excel文档操作更加简单方便。 使用POI框架,我们需要进行以下步骤: 1. 使用POI API创建工作簿、工作表等Excel对象。 2. 向工作表中创建行、单元格对象,设置数据。 3. 将数据写入Excel文件,保存Excel文件。 方法二:EasyExcel EasyExcel是一款简洁、易用、高效的Java操作Excel工具,它能够快速的读写Excel文档,支持大量数据写入,速度很快。 使用EasyExcel,我们需要进行以下步骤: 1. 使用EasyExcel API创建工作簿、工作表等Excel对象。 2. 向工作表中创建行、单元格对象,设置数据。 3. 将数据写入Excel文件,保存Excel文件。 方法三:Apache POI+Freemarker Apache POI+Freemarker是一种结合使用的方法,可以更加灵活、简便地操作Excel。 使用Apache POI+Freemarker,我们需要进行以下步骤: 1. 使用POI API创建工作簿、工作表等Excel对象。 2. 使用Freemarker模板引擎,将数据与Excel模板进行合并。 3. 将合并后的Excel文件写入磁盘,保存Excel文件。 以上就是Java导出Excel三种方法,开发者们可以根据实际需求进行选择使用。需要注意的是,尽管以上三种方法的耗时都较少,容易操作,但还是存在相应的缺点和问题,需要我们在使用时认真考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值