Excel中提取单词中间大写字母位置右侧文本的实现方法
Excel中提取单词中间大写字母位置右侧文本的实现方法
嗨,Michelle!这个需求完全可以通过Excel的文本函数组合来实现,我给你准备了两种方案,分别适配不同版本的Excel:
方案一:适用于Excel 365/2021(支持动态数组)
直接用下面的公式,输入后按回车即可生效:
=MID(A1,MIN(IF(CODE(MID(A1,SEQUENCE(LEN(A1)),1))>=65,IF(CODE(MID(A1,SEQUENCE(LEN(A1)),1))<=90,IF(CODE(MID(A1,SEQUENCE(LEN(A1))-1,1))>=97,IF(CODE(MID(A1,SEQUENCE(LEN(A1))-1,1))<=122,SEQUENCE(LEN(A1)))))),LEN(A1))
公式逻辑说明:
- 先用
SEQUENCE(LEN(A1))生成单元格A1中每个字符的位置序列 - 通过
CODE函数判断每个字符是否为大写字母(ASCII码65-90),同时判断它的前一个字符是否为小写字母(ASCII码97-122) - 找到第一个满足“小写字母后跟大写字母”的位置,用
MID函数从这个位置开始提取到单元格末尾的所有文本
方案二:适用于旧版Excel(无动态数组支持)
这个版本需要按Ctrl+Shift+Enter作为数组公式输入:
=MID(A1,MIN(IF((CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))>=65)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<=90)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1)))-1,1))>=97)*(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1)))-1,1))<=122),ROW(INDIRECT("1:"&LEN(A1))))),LEN(A1))
公式逻辑说明:
- 用
ROW(INDIRECT("1:"&LEN(A1)))代替SEQUENCE生成字符位置序列(旧版Excel没有SEQUENCE函数) - 其余逻辑和方案一完全一致,通过多条件判断找到目标大写字母的位置,再提取右侧文本
额外优化建议
如果担心单元格中没有符合条件的文本导致公式返回错误,可以套一层IFERROR处理:
=IFERROR(上面的公式,"无符合条件的文本")
比如你给出的例子:
- A1 = The red carYellow space → 公式返回 Yellow space
- A2 = The pink bikeRed space → 公式返回 Red space
- A3 = The green truckBlue space → 公式返回 Blue space
完全符合你的需求哦!
备注:内容来源于stack exchange,提问作者Michelle




