案例
假设我们有以下数据:
测试数据 |
---|
苹果;橙子 |
北京;上海;广州;深圳 |
红色;绿色;蓝色;黄色;紫色 |
周一;周二;周三;周四;周五 |
10;20;30;40;50;60 |
春;夏;秋;冬;早;午;晚 |
需求:提取分割后倒数第二个内容,如下所示
提取结果 |
---|
苹果 |
广州 |
黄色 |
周四 |
50 |
午 |
方法一:使用Excel内置函数组合
在Excel中,没有直接获取倒数第N个元素的函数,我们需要组合使用多个函数:
方案1:TEXTSPLIT+INDEX组合(仅Excel 365可用)
=INDEX(TEXTSPLIT(A1,";"),
COUNT(TEXTSPLIT(A1,";"))-1)
解析:
TEXTSPLIT(A1,",")
将字符串分割成数组COUNT(...)
计算元素总数INDEX(...,总数-1)
获取倒数第二个元素
方案2:传统函数组合(适用于所有版本)
=TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",100)),(LEN(A1)-LEN(SUBSTITUTE(A1,",",""))-1)*100+1,100))
解析:
- 用空格替换分隔符创建固定宽度字段
- 计算倒数第二个字段的位置
- 用MID提取该位置内容
方法二:使用《Excel公式盒子》 ex_GetSplitText
相比之下,使用我们介绍的自定义函数就简单得多:
=ex_GetSplitText(A1,";",-2)
小提示:
- 支持正数/负数位置索引
- 正数:如:1 取分割后第一个数据
- 负数:如:-1 取分割后倒数第一个数据
更多实用场景
这个技巧可以应用于各种场景:
-
文件路径处理:
=ex_GetSplitText("C:\项目\2023\报告\财务.xlsx","\",-2) → "报告"
-
时间序列数据:
=ex_取分割内容("2022-01,2022-02,2022-03,2022-04",",",-1) → "2022-04"
-
多级分类数据:
=ex_GetSplitText("家电/大家电/冰箱/双开门", "/", -3) → "大家电"
为什么负数索引如此实用?
- 数据位置不固定:当字符串中元素数量不固定时,从末尾开始计数更可靠
- 提取特定后缀:如文件扩展名、最后一级目录等
- 处理动态增长数据:新增数据不会影响从末尾开始的索引
为什么会有这篇文章,因为小编在工作时,会经常处理文件路径,文件来自不同的路径,要取出文件名,就像这样,
实在是让小编挠头,所以就想到了以上这些办法,其实还有一个办法,可以很快速的取出文件名和扩展名,就是使用"《Excel公式盒子》"中的f_系列函数,这个是专门操作文件和文件路径相关的函数
效果如下:
函数用法:
Excel公式盒子
▸下载地址: 《Excel公式盒子》calcx.cn(兼容WPS/Excel)