无论是Power BI还是Excel,批量导入图片都是刚需。Power BI参考《Power BI本地图片显示最佳解决方案》,本文分享Excel批量导入图片的三种方式。
最传统的方式是VBA,ExcelHome有海量的代码,以下是其中之一,批量选中单元格,自动插入该单元格内容对应的图片。图片既可以是图床URL,也可以储存在本地磁盘。该方式兼容几乎兼容现在还在使用的所有Excel版本。
Sub 单元格显示图片()
'来源:ExcelHome http://club.excelhome.net/thread-1188085-1-1.html
On Error Resume Next
Dim MR As Range
For Each MR In Selection
If Not IsEmpty(MR) Then
MR.Select
ML = MR.Left
MT = MR.Top
MW = MR.Width
MH = MR.Height
ActiveSheet.Shapes.AddShape(msoShapeRectangle, ML, MT, MW, MH).Select
Selection.ShapeRange.Fill.UserPicture _
"路径" & MR.Value & ".jpg"
End If
Next
End Sub
第二种方式还是VBA,起因是微软在2023年新增一个插图功能:将图片直接放置在单元格中,路径如下图所示:
这使得Excel导入本地图片时有了新的交互效果,图片可以放置在单元格,也可以弹出,弹出后又可以缩回,图片还可以被公式直接引用,以下是效果演示:
默认只能单个图片导入,我设计了一段VBA可以实现批量导入,同样既可以图床URL也可以本地图片。该方法可以在365版本的Excel使用(其他版本我没测试过)
Sub pictool()
Dim wu As Range
For Each wu In Selection
If Not IsEmpty(wu) Then
wu.Select
Selection.InsertPictureInCell ("D:\公众号文件\案例\零售案例\商品管理:陈列销售库存看板 Excel版\产品照片\" & wu.Value & ".png ")
End If
Next
'公众号、知乎、B站:wujunmin
End Sub
第三个方法不需要VBA,微软在2022年发布了Image函数,Image函数的语法如下:
=IMAGE (source, [alt_text], [sizing], [height], [width])
第一和第三个参数最常用到。第一个参数source即图片来源,仅支持HTTPS,如下图所示,仅这一个参数已可获得初步结果,目前支持的格式包括 BMP、JPG/JPEG、GIF、TIFF、PNG、ICO 和 WEBP。
第三个参数sizing用来设置图像和单元格的大小对应关系,不是必填项,参数的值可以是:
0 调整单元格中的图像并保持其纵横比。
1 使用图像填充单元格并忽略其纵横比。
2 保持原始图像大小,这可能会超过单元格边界。
3 使用高度和宽度参数自定义图像大小。
下图左侧是该参数为0的结果,右侧是1的结果。
目前的演示是单个图片,如何批量显示?批量显示的前提是知道图像URL的变化规律。下图通过分析某电商网站的图片URL,得知URL和产品ID是对应关系,且产品ID在URL中出现了2次,因此,将IMAGE函数如下设置公式后,即可批量显示产品图片。该方法可以在365版本的Excel使用。
另外第二第三种方法导入的图片可以用在透视表的行列,该功能于2023年发布,目前仍不支持用在【值】上。