如何用IF公式或宏将Sheet2图片导入Excel订单流工作表?
Excel订单时间线插产品图片的解决办法
先给你说清楚:Excel公式没法直接调用显示图片——公式只能返回数值或文本,所以你之前用公式调用返回0是正常的,得换两种实际能用的方案:
方案一:用VBA精准插图(解决你之前粘贴位置不准的问题)
先给Sheet2的图片改好名字:选中Sheet2里的产品图,在Excel左上角的名称框(就是显示单元格地址的那个框)输入对应产品的名字,比如和Sheet2 B列的产品名称完全一致(比如B11是“XX零件”,图片就命名成“XX零件”)。
然后按Alt+F11打开VBA编辑器,右键点你的工作簿→插入→模块,粘贴下面这段代码:
Sub 批量插订单图片() Dim 订单表 As Worksheet, 图片表 As Worksheet Dim 起始日期列 As Range, 当前单元格 As Range Dim 产品名 As String Dim 目标图片 As Shape Set 订单表 = ThisWorkbook.Sheets("Sheet1") '你的订单时间线工作表 Set 图片表 = ThisWorkbook.Sheets("Sheet2") '存图片的工作表 Set 起始日期列 = 订单表.Range("F6:F" & 订单表.Cells(订单表.Rows.Count, "F").End(xlUp).Row) '起始日期在F列,按需改列号 '先清掉订单表里旧的产品图 For Each 目标图片 In 订单表.Shapes If 目标图片.Name Like "产品图_" & "*" Then '按后面的命名规则清图,可改 目标图片.Delete End If Next 目标图片 '挨个匹配插入图片 For Each 当前单元格 In 起始日期列 产品名 = 订单表.Cells(当前单元格.Row, "H").Value '假设H列是产品名称,对应图片的名字,按需改列号 On Error Resume Next Set 目标图片 = 图片表.Shapes(产品名) On Error GoTo 0 If Not 目标图片 Is Nothing Then 目标图片.Copy 订单表.Paste 当前单元格 '调整图片大小刚好嵌在单元格里 With 订单表.Shapes(订单表.Shapes.Count) .Name = "产品图_" & 当前单元格.Row .Top = 当前单元格.Top .Left = 当前单元格.Left .LockAspectRatio = msoFalse .Width = 当前单元格.Width .Height = 当前单元格.Height End With End If Next 当前单元格 End Sub
回到Excel,点“开发工具”→“宏”,运行这个宏,图片就会精准粘到对应起始日期单元格里了。
方案二:不用VBA,靠定义名称插图
适合不想碰代码的情况:
- 按Ctrl+F3打开名称管理器,点“新建”:
- 名称随便取,比如“对应产品图”
- 引用位置输入
=INDEX(Sheet2!$A$1:$C$100,MATCH(Sheet1!$H6,Sheet2!$B$1:$B$100,0),3)——这里假设Sheet2的C列是放图片的单元格,Sheet1的H6是产品名称,你根据自己的表格调整范围
- 回到Sheet1,选中要放图的起始日期单元格(比如F6),插入一张任意图片(之后会自动替换)
- 选中这张图,在编辑栏里输入
=对应产品图,按回车,图就变成对应产品的了 - 把这张图复制到其他起始日期单元格,就能批量匹配
顺便说下你的原公式
你原来的公式=IF(AND(F6=I6,H6=Sheet2!$B$11,Picture1,"NA"))逻辑错了,正确结构应该是=IF(AND(F6=I6,H6=Sheet2!$B$11),"匹配成功","NA"),但哪怕改对了也没法调用图片,所以还是用上面的方案靠谱。
内容的提问来源于stack exchange,提问作者Brandon M.
相关产品推荐
相关产品推荐

