我有一个包含字符串列表的Excel电子表格.每个字符串由几个单词组成,但每个字符串中的单词数不同.
使用内置的Excel函数(无VBA),有没有办法隔离每个字符串中的最后一个单词?
例子:
Are you classified as human? -> human? Negative, I am a meat popsicle -> popsicle Aziz! Light! -> Light!
BradC.. 203
这个测试并且确实有效(基于Brad的原始帖子):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
如果原始字符串可能包含管道"|" 字符,然后将上面的两个字符替换为源中不会出现的其他字符.(我怀疑Brad的原文被破坏了,因为在翻译中删除了一个不可打印的字符).
奖金:它是如何工作的(从右到左):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- 原始字符串中的空格计数
SUBSTITUTE(A1," ","|", ... )
- 用a 替换最终空格|
FIND("|", ... )
- 查找替换的绝对位置|
(即最终空格)
Right(A1,LEN(A1) - ... ))
- 返回之后的所有字符|
编辑:要考虑源文本不包含空格的情况,请将以下内容添加到公式的开头:
=IF(ISERROR(FIND(" ",A1)),A1, ... )
现在制作整个公式:
=IF(ISERROR(FIND(" ",A1)),A1, RIGHT(A1,LEN(A1) - FIND("|", SUBSTITUTE(A1," ","|",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))))
或者您可以使用=IF(COUNTIF(A1,"* *")
其他版本的语法.
当原始字符串在最后位置可能包含空格时,在计算所有空格时添加trim函数:使函数如下:
=IF(ISERROR(FIND(" ",B2)),B2, RIGHT(B2,LEN(B2) - FIND("|", SUBSTITUTE(B2," ","|",LEN(TRIM(B2))-LEN(SUBSTITUTE(B2," ",""))))))
+1:我必须记住"LEN(A1)-LEN(SUBSTITUTE(A1,",""))"获取角色实例数的技巧 (3认同)
优秀解决方案 唯一的问题是Excel本地化函数名称,因此您需要重写非英语Excel的公式.以下是俄语版的重写版本:=ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСК("|";ПОДСТАВИТЬ(A1;"";"|";ДЛСТР(A1)-ДЛСТР(ПОДСТАВИТЬ(A1; "";""))))) (2认同)
Jerry Beauca.. 79
这是我用过的非常成功的技术:
=TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))
要获取字符串中的第一个单词,只需从RIGHT更改为LEFT
=TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))
另外,用包含文本的单元格替换A1.
这个测试并且确实有效(基于Brad的原始帖子):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
如果原始字符串可能包含管道"|" 字符,然后将上面的两个字符替换为源中不会出现的其他字符.(我怀疑Brad的原文被破坏了,因为在翻译中删除了一个不可打印的字符).
奖金:它是如何工作的(从右到左):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- 原始字符串中的空格计数
SUBSTITUTE(A1," ","|", ... )
- 用a 替换最终空格|
FIND("|", ... )
- 查找替换的绝对位置|
(即最终空格)
Right(A1,LEN(A1) - ... ))
- 返回之后的所有字符|
编辑:要考虑源文本不包含空格的情况,请将以下内容添加到公式的开头:
=IF(ISERROR(FIND(" ",A1)),A1, ... )
现在制作整个公式:
=IF(ISERROR(FIND(" ",A1)),A1, RIGHT(A1,LEN(A1) - FIND("|", SUBSTITUTE(A1," ","|",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))))
或者您可以使用=IF(COUNTIF(A1,"* *")
其他版本的语法.
当原始字符串在最后位置可能包含空格时,在计算所有空格时添加trim函数:使函数如下:
=IF(ISERROR(FIND(" ",B2)),B2, RIGHT(B2,LEN(B2) - FIND("|", SUBSTITUTE(B2," ","|",LEN(TRIM(B2))-LEN(SUBSTITUTE(B2," ",""))))))
这是我用过的非常成功的技术:
=TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))
要获取字符串中的第一个单词,只需从RIGHT更改为LEFT
=TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))
另外,用包含文本的单元格替换A1.
Jerry的答案更强大的版本:
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), " ", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
无论字符串的长度,前导或尾随空格,还是其他任何内容,它都可以正常工作,而且它仍然非常简短.
我在谷歌上发现了这个,在Excel 2003中测试过它对我有用:
=IF(COUNTIF(A1,"* *"),RIGHT(A1,LEN(A1)-LOOKUP(LEN(A1),FIND(" ",A1,ROW(INDEX($A:$A,1,1):INDEX($A:$A,LEN(A1),1))))),A1)
[编辑]我没有足够的代表评论,所以这似乎是最好的地方... BradC的答案也不适用于尾随空格或空单元格...
[第二次编辑]实际上,它不起作用单词要么......