分类
EXCEL 列内每行内容
抽出到另外一列VBA解决方案
专门处理H列数据(从H2开始),提取所有
<img src="图片路径" />
标签到新列,并用半角逗号分隔:
Sub ExtractImgTags()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim cellValue As String, imgTags As String
Dim regex As Object, matches As Object
' 设置工作表和最后一行
Set ws = ThisWorkbook.Sheets("Sheet1") ' 改为您的实际工作表名
lastRow = ws.Cells(ws.Rows.Count, "H").End(xlUp).Row
' 创建正则表达式对象
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True ' 全局搜索
.IgnoreCase = True ' 忽略大小写
.Pattern = "<img[^>]*?/>" ' 匹配<img.../>标签
End With
Application.ScreenUpdating = False
' 添加标题(可选)
ws.Range("I1").Value = "提取的图片标签"
ws.Range("J1").Value = "清理后内容"
For i = 2 To lastRow
cellValue = ws.Cells(i, "H").Value
imgTags = ""
' 检查并提取所有匹配的图片标签
If regex.Test(cellValue) Then
Set matches = regex.Execute(cellValue)
' 拼接所有匹配的标签
For Each match In matches
imgTags = imgTags & match.Value & ","
Next match
' 移除最后一个逗号
If Len(imgTags) > 0 Then
imgTags = Left(imgTags, Len(imgTags) - 1)
End If
' 从原文本移除标签
cellValue = regex.Replace(cellValue, "")
End If
' 输出结果到I列和J列
ws.Cells(i, "I").Value = imgTags
ws.Cells(i, "J").Value = cellValue
Next i
Application.ScreenUpdating = True
MsgBox "处理完成!共处理 " & lastRow - 1 & " 行数据", vbInformation
End Sub
使用说明:
按Alt+F11 打开VBA编辑器
插入新模块:右键项目 → 插入 → 模块
粘贴代码:复制上述代码到模块中
修改工作表名:将代码中的”Sheet1″改为您的工作表名
执行宏:
按F5运行
或返回Excel → 开发者工具 → 宏 → 选择ExtractImgTags → 运行
结果说明:
I列:提取的所有
<img src="图片路径" />
标签,用逗号分隔
<img src="pic1.jpg"/>,<img src="pic2.jpg"/>
J列:原始内容移除图片标签后的文本
H列:原始数据保持不变