温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - MS Excel Formula: Find Position/Location of a Word in a String
excel excel-formula search string position

其他 - MS Excel公式:查找字符串中单词的位置/位置

发布于 2020-04-06 23:55:24

使用MS Excel公式(不是VBA),我想找到在字符串中找到的特定单词的实际位置/位置。如果可能的话,我想使用“搜索和/或替换”与“查找或替换”功能,因为文本字符串不是绝对的大写字母。

单元格A1(文本字符串):“狗跑到房子后面,然后跳下篱笆。”
单元格B1 :(目标关键字):Ran
单元格C1(单词的位置):3

提前感谢你的帮助。

查看更多

提问者
Miaka3
被浏览
84
JvdV 2020-02-02 17:58

以下内容将为您提供包含子字符串的第一个单词的单词索引

=SEARCH(B1,A1)-LEN(SUBSTITUTE(LEFT(A1,SEARCH(B1,A1))," ",""))+1

如果可以访问,则FILTERXML可以通过抛出一些内容来检索它MATCH,这将返回完全匹配的单词索引

=MATCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),0)

注意:第二个公式需要通过CtrlShiftEnter

按照@BigBen,如果您的字符串包含特殊字符(如逗号等),则可能会遇到麻烦。在这种情况下,您可能需要添加更多的嵌套SUBSTITUTE公式来解决该情况。


如果需要多个匹配项,并且希望将其串联到单个单元格中,则需要访问该TEXTJOIN函数。要获取包含子字符串的单词的所有单词索引

=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"))),ROW(A1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),""))

要获取所有保留查找值的完全匹配项:

=TEXTJOIN(", ",TRUE,IF(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s")=B1,ROW(A1:INDEX(A:A,LEN(A1)-LEN(SUBSTITUTE(A1," ","")))),""))

注意:两个公式都需要通过输入CtrlShiftEnter