Excel中按下划线前唯一前缀拆分竖线分隔的图片文件名
Excel按图片前缀拆分并单独成行的解决方法
方法一:Excel公式手动处理
假设原始竖线分隔的数据在A列(从A2行开始):
- 拆分竖线分隔内容
- 选中A列数据,点击「数据」选项卡→「分列」,分隔符选择「其他」并输入
|,完成后数据会拆分为多列。 - 把所有拆分后的单元格内容统一复制到单列(比如B列),确保每个文件名单独占一个单元格。
- 选中A列数据,点击「数据」选项卡→「分列」,分隔符选择「其他」并输入
- 提取并去重前缀
- 在C2单元格输入公式:
=LEFT(B2,FIND("_",B2)-1),下拉填充至所有数据行,自动提取每个文件名的下划线前缀。 - 选中C列,点击「数据」选项卡→「删除重复值」,得到所有唯一前缀(如imagefile1、imagefile2、imagefile3)。
- 在C2单元格输入公式:
- 按前缀汇总文件名
- 新建工作表,将唯一前缀依次放在第一列(比如D列)。
- 在E2单元格输入数组公式:
=TEXTJOIN("|",TRUE,IF(LEFT($B$2:$B$100,FIND("_",$B$2:$B$100)-1)=D2,$B$2:$B$100,"")),按Ctrl+Shift+Enter执行,下拉填充后即可得到每个前缀对应的所有文件名,每个前缀单独成行。
方法二:VBA宏批量处理
打开Excel后按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Sub SplitByPrefix() Dim wsSource As Worksheet, wsTarget As Worksheet Dim lastRow As Long, i As Long, j As Long Dim fileNameArr As Variant, prefix As String Dim prefixDict As Object Set wsSource = ActiveSheet Set wsTarget = ThisWorkbook.Sheets.Add(After:=wsSource) wsTarget.Range("A1").Value = "前缀" wsTarget.Range("B1").Value = "对应文件名" Set prefixDict = CreateObject("Scripting.Dictionary") lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row ' 遍历所有行,收集前缀与对应文件名 For i = 2 To lastRow fileNameArr = Split(wsSource.Cells(i, "A").Value, "|") For j = LBound(fileNameArr) To UBound(fileNameArr) prefix = Left(fileNameArr(j), InStr(fileNameArr(j), "_") - 1) If prefixDict.Exists(prefix) Then prefixDict(prefix) = prefixDict(prefix) & "|" & fileNameArr(j) Else prefixDict(prefix) = fileNameArr(j) End If Next j Next i ' 将结果写入目标工作表 i = 2 For Each key In prefixDict.Keys wsTarget.Cells(i, "A").Value = key wsTarget.Cells(i, "B").Value = prefixDict(key) i = i + 1 Next key MsgBox "处理完成!" End Sub
返回Excel界面,按Alt+F8运行宏,程序会自动生成按前缀分组的结果,每个前缀单独成行。
内容的提问来源于stack exchange,提问作者user3075601
相关产品推荐
相关产品推荐

