引言:本文的练习整理自网络。多练习,这是我们从小就在使用的学习方法。在练习的过程中,认真思考,不断尝试,以此来磨练自己的公式与函数应用技能,也让研究Excel的大脑时刻保持着良好的状态。同时,想想自己怎么解决这个问题,看看别人又是怎样解决的,从而快速提高Excel公式应用水平。
本次的练习是:从一个英文句子中返回最后一个单词。示例数据如下图1所示,列A中是句子,列B中是返回的单词。
图1
请写下你的公式。
解决方案
公式1:使用某个字符(不可能出现在句子中的字符)替换掉最后一个单词之前的空格,然后查找该字符的位置,加上1,从而得到最后一个单词的起始位置,再使用MID函数提取该单词。
=MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,255)
这个公式的缺点是,如果句子只有一个单词,会出错。下面是改进公式。
=IF(COUNTIF(A1,"**"),MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1,"",""))))+1,255),A1)
使用COUNTIF函数来判断句子中是否有空格。
或者:
=IF(LEN(A1)=LEN(SUBSTITUTE(A1,"","")),A1,MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"",CHAR(1),LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))+1,255))
使用LEN(A1)=LEN(SUBSTITUTE(A1," ","")判断是否有空格。
公式2:使用LOOKUP函数来确定最后一个空格所在的位置,从而获取最后一个单词的长度,再使用RIGHT函数取出最后一个单词。
=IFERROR(RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND("",A1,ROW(INDEX(A:A,LEN(A1),1))))),A1)
或者使用ROW(INDIRECT("1:"&LEN(A1)))代替ROW/INDEX:
=IFERROR(RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND("",A1,ROW(INDIRECT("1:"&LEN(A1)))))),A1)
同样,使用COUNTIF函数来判断句子中是否有空格:
=IF(COUNTIF(A1,"**"),RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND("",A1,ROW(INDEX(A:A,LEN(A1),1))))),A1)
公式3:干脆在前面主动添加一个空格。
=RIGHT(A1,LEN(""&A1)-LOOKUP(LEN(" "&A1),FIND(" ",""&A1,ROW(INDEX(A:A,LEN(A1),1)))))
公式4:很巧妙的一个公式。添加足够多的空格,然后从右侧取出带有空格的单词,再使用TRIM函数剔除空格。
=TRIM(RIGHT(SUBSTITUTE(A1,"",REPT(" ",255)),255))