如何从产品标题列中删除末尾可变长度的产品ID?
嘿,我来帮你搞定这个问题!针对你这种标题末尾带可变长度数字ID的情况,结合7000条的大数据量,给你几个实用的解决方案:
方法1:Excel公式(快速上手)
既然ID都是在标题最后,且和前面内容用空格分隔,我们可以精准定位最后一个空格的位置,截取前面的有效标题。试试这个公式(假设标题在A2单元格):
=LEFT(A2, FIND("~", SUBSTITUTE(A2, " ", "~", LEN(A2)-LEN(SUBSTITUTE(A2, " ", ""))))-1)
公式说明:
LEN(A2)-LEN(SUBSTITUTE(A2, " ", ""))算出标题里总共有多少个空格SUBSTITUTE(..., "~", 空格总数)把最后一个空格替换成特殊字符~(选一个标题里不会出现的字符就行)FIND("~", ...)找到这个特殊字符的位置,减1就是有效标题的最后一位LEFT(A2, 位置)截取前面的内容,完美去掉末尾的ID
如果你的标题里有类似Gas - 6954722这种带连字符的情况,这个公式也能正常工作——它只认最后一个空格,不影响前面的标题内容。
要是你的ID都是纯数字,还可以用这个数组公式(Excel 365直接回车,旧版本按Ctrl+Shift+Enter):
=LEFT(A2, MAX(IF(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),0,ROW(INDIRECT("1:"&LEN(A2))))))
它会自动找到最后一个非数字字符的位置,精准截断后面的数字ID,连ID前的空格也一起去掉。
方法2:Power Query(大数据量首选)
7000条数据用公式虽然能行,但Power Query批量处理更稳定,还能重复使用步骤:
- 选中你的数据表格,点击数据选项卡 → 从表格/区域(Excel 2016及以后版本支持)
- 进入Power Query编辑器后,选中Title列,点击转换选项卡 → 拆分列 → 按分隔符
- 在弹出窗口里:
- 分隔符选择空格
- 拆分方式选最右侧的分隔符
- 这时会生成两列,第一列就是去掉ID的标题,第二列是原来的ID,直接删除第二列即可
- 点击关闭并上载,处理好的数据就会导回Excel里
方法3:VBA宏(自动化处理)
如果以后还要频繁处理类似数据,写个简单的宏能省不少事:
Sub RemoveEndProductID() Dim targetRange As Range Dim cell As Range ' 假设Title列是B列,从第2行开始到最后一行数据 Set targetRange = Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row) For Each cell In targetRange ' 找到最后一个空格的位置,截取前面的内容 If InStr(cell.Value, " ") > 0 Then cell.Value = Left(cell.Value, InStrRev(cell.Value, " ") - 1) End If Next cell End Sub
使用方法:按Alt+F11打开VBA编辑器,插入一个模块,粘贴代码,修改列号(如果Title不在B列),然后运行宏就行。
你可以先拿几条数据测试下这些方法,选最适合你的就行!
内容的提问来源于stack exchange,提问作者Dmitriy Kutuzov




