Excel中保留&前代码,删除&后至|前内容的实现需求
Excel提取&前代码的方法
针对你给出的列数据,要提取每个商品项中&之前的代码,同时保留|分隔的结构,可以用以下两种方法:
方法一:Excel 365/2021 公式法
假设数据在A列,在B2单元格输入以下公式,下拉填充即可:
=TEXTJOIN("|",TRUE,LEFT(TEXTSPLIT(A2,"|"),FIND("&",TEXTSPLIT(A2,"|")&"&")-1))
公式逻辑:
TEXTSPLIT(A2,"|"):把单元格内容按|拆分成单个商品项的数组FIND("&",TEXTSPLIT(A2,"|")&"&")-1:给每个商品项末尾补一个&(避免无后续内容时出错),找到&的位置后减1,得到代码的长度LEFT(...):提取每个商品项中&之前的内容TEXTJOIN("|",TRUE,...):把提取出的代码用|重新连接,TRUE参数会自动忽略空值
方法二:旧版Excel VBA自定义函数
如果你的Excel版本没有TEXTSPLIT/TEXTJOIN功能,用VBA自定义函数更方便:
- 按
Alt+F11打开VBA编辑器 - 右键点击左侧工作簿名称,选择「插入」→「模块」
- 粘贴以下代码:
Function ExtractCodes(rng As Range) As String Dim items As Variant Dim i As Integer Dim result As String items = Split(rng.Value, "|") For i = LBound(items) To UBound(items) Dim ampPos As Integer ampPos = InStr(items(i), "&") If ampPos > 0 Then result = result & Left(items(i), ampPos - 1) & "|" End If Next i ' 去掉最后多余的| If Len(result) > 0 Then ExtractCodes = Left(result, Len(result) - 1) End If End Function
- 返回Excel界面,在B2单元格输入
=ExtractCodes(A2),下拉填充即可
测试你的示例数据,两种方法都能得到以下结果:
- 原内容
3&12|4&200|2&→ 提取后3|4|2 - 原内容
5&|2&→ 提取后5|2 - 原内容
4&|→ 提取后4 - 原内容
2&12|35&744→ 提取后2|35
内容的提问来源于stack exchange,提问作者beginner
相关产品推荐
相关产品推荐

