Excel中去除LSKU末尾字母的公式问题求助
解决LSKU末尾字母移除的Excel公式问题
问题场景
你需要将以下LSKU值处理为末尾无字母的形式:
000AD21961PD→000AD21961000BP20725PA→000BP2072500C0BC23057C→00C0BC23057
尝试使用公式SUBSTITUTE(A7,IF(RIGHT(A7,1)="C","C"),"!")时,第三个LSKU被错误替换为00C0B!23057!,原计划删除所有!但公式不符合需求,这里给你提供正确的解决方案。
正确解决方案
方法1:固定移除末尾1个字母(适配当前场景)
如果确定每个LSKU都是末尾仅1个字母,直接用LEFT函数截取前N-1位即可,简单高效:
=LEFT(A7,LEN(A7)-1)
- 原理:
LEN(A7)获取单元格字符总长度,减1后得到需要保留的字符数,LEFT从左侧截取对应长度的内容,刚好去掉最后一位字母。 - 测试:对三个目标值都能输出正确结果,完全匹配你的需求。
方法2:通用处理(兼容末尾多字母场景)
如果未来可能遇到末尾有多个字母的情况(比如000AD21961XYZ需要转为000AD21961),可以用这个更通用的数组公式:
=LEFT(A7,MAX(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A7,ROW(INDIRECT("1:"&LEN(A7)))),0))-1)
注意:Excel 2019及更早版本需要按
Ctrl+Shift+Enter确认输入;Excel 365/2021及以后版本直接回车即可生效。
- 原理:定位字符串中最后一个数字的位置,截取到该位置的前一位,自动移除末尾所有非数字字符,适配更复杂的场景。
原公式出错原因
你使用的SUBSTITUTE函数会替换单元格内所有匹配的字符,比如第三个LSKU00C0BC23057C里有两个C,所以两个都被替换成了!,这和你只需要移除末尾单个字母的需求不符,因此出现错误结果。
内容的提问来源于stack exchange,提问作者Jun Young Kim
相关产品推荐
相关产品推荐

