为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用VBA的情况下在Excel中执行反向字符串搜索?

如何在不使用VBA的情况下在Excel中执行反向字符串搜索?

湖上湖 2019-11-06 10:19:06
我有一个包含字符串列表的Excel电子表格。每个字符串由几个单词组成,但是每个字符串中的单词数量不同。使用内置的Excel函数(无VBA),是否可以隔离每个字符串中的最后一个单词?例子:  您被归类为人类吗?->人类?负面,我是肉冰棍->冰棍                  阿齐兹!光!->轻!
查看完整描述

3 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

该代码已经过测试并且可以正常工作(基于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,"* *")其他版本的语法。


当原始字符串的最后一个位置可能包含空格时,请在计算所有空格时添加修剪函数:使函数具有以下含义:


=IF(ISERROR(FIND(" ",B2)),B2, RIGHT(B2,LEN(B2) - FIND("|",

    SUBSTITUTE(B2," ","|",LEN(TRIM(B2))-LEN(SUBSTITUTE(B2," ",""))))))


查看完整回答
反对 回复 2019-11-06
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

这是我成功使用的技术:


=TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))

要获得字符串中的第一个单词,只需从RIGHT更改为LEFT


=TRIM(LEFT(SUBSTITUTE(A1, " ", REPT(" ", 100)), 100))

另外,将A1替换为包含文本的单元格。


查看完整回答
反对 回复 2019-11-06
  • 3 回答
  • 0 关注
  • 1002 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信