excel如何跟据一个表格两行中对应文字和图片,用图片匹配另一个表格打乱顺序的文字,帮我写个VBA匹配
时间: 2024-03-06 22:49:00 浏览: 175
VBA学习笔记本(二)——两个表格数据匹配_DEMO
以下是使用VBA实现根据一个表格两行中对应文字和图片,用图片匹配另一个表格打乱顺序的文字的程序代码:
```VBA
Sub MatchPictures()
Dim pictureRange As Range
Dim pictureCell As Range
Dim pictureName As String
Dim textRange As Range
Dim textCell As Range
Dim textValue As String
Dim matchRange As Range
Dim matchCell As Range
Dim matchValue As String
Dim pictureIndex As Integer
'获取包含图片和对应文字的表格范围
Set pictureRange = Range("A1:B5")
'获取打乱顺序的文字表格范围
Set textRange = Range("D1:D5")
'获取需要匹配的表格范围
Set matchRange = Range("F1:F5")
'循环需要匹配的表格中的单元格
For Each matchCell In matchRange
'获取当前单元格中的文字
matchValue = matchCell.Value
'初始化图片索引为0
pictureIndex = 0
'在包含图片和对应文字的表格范围中查找对应的图片
For Each pictureCell In pictureRange.Columns(2).Cells
'如果找到对应的文字,则获取对应的图片名称
If pictureCell.Value = matchValue Then
pictureName = pictureCell.Offset(0, -1).Value
'在当前单元格中插入对应的图片
Set pictureCell = matchCell.Offset(0, 1)
pictureCell.Select
ActiveSheet.Pictures.Insert(pictureName).Select
'调整图片大小和位置
Selection.ShapeRange.LockAspectRatio = msoTrue
Selection.ShapeRange.Width = pictureCell.Width
Selection.ShapeRange.Height = pictureCell.Height
Selection.ShapeRange.Top = pictureCell.Top
Selection.ShapeRange.Left = pictureCell.Left
'设置图片索引为1
pictureIndex = 1
'退出循环
Exit For
End If
Next pictureCell
'如果未找到对应的图片,则在当前单元格中清除图片
If pictureIndex = 0 Then
Set pictureCell = matchCell.Offset(0, 1)
pictureCell.Select
Selection.ShapeRange.Delete
End If
Next matchCell
End Sub
```
该程序与前面的程序类似,不同之处在于它使用循环遍历需要匹配的表格中的单元格,并在包含图片和对应文字的表格范围中查找对应的图片。如果找到对应的图片,则在当前单元格中插入对应的图片,并调整图片大小和位置。如果未找到对应的图片,则在当前单元格中清除图片。你可以将该程序复制到Excel的VBA编辑器中并运行,就可以实现根据一个表格两行中对应文字和图片,用图片匹配另一个表格打乱顺序的文字。
阅读全文