分类
原创教程

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列:原始数据保持不变

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

科学上网·梯子


推荐文章