MS Excel 公式:在字符串中查找 Position/Location 个单词
MS Excel Formula: Find Position/Location of a Word in a String
使用 MS Excel 公式(不是 VBA),我想找到在字符串中找到的特定单词的实际 position/location。如果可能的话,我想使用 "Search and/or Replace" 与 "Find or Substitute" 函数,因为文本字符串不是绝对的字母大小写。
单元格 A1(文本字符串):"The dog ran behind the house and then jumped the fence."
单元格 B1:(目标关键字):运行
单元格 C1(单词的位置):3
在此先感谢您的帮助。
以下将为您提供 包含 您的子字符串的第一个单词的单词索引:
=SEARCH(B1,A1)-LEN(SUBSTITUTE(LEFT(A1,SEARCH(B1,A1))," ",""))+1
如果您可以访问 FILTERXML
,您可以通过输入一些 MATCH
来检索它,这将 return 精确 匹配:
=MATCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),0)
注意:第二个公式需要通过CtrlShift[=38输入=]输入
根据@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," ","")))),""))
注意:两个公式都需要通过CtrlShift[=38=输入]输入
使用 MS Excel 公式(不是 VBA),我想找到在字符串中找到的特定单词的实际 position/location。如果可能的话,我想使用 "Search and/or Replace" 与 "Find or Substitute" 函数,因为文本字符串不是绝对的字母大小写。
单元格 A1(文本字符串):"The dog ran behind the house and then jumped the fence."
单元格 B1:(目标关键字):运行
单元格 C1(单词的位置):3
在此先感谢您的帮助。
以下将为您提供 包含 您的子字符串的第一个单词的单词索引:
=SEARCH(B1,A1)-LEN(SUBSTITUTE(LEFT(A1,SEARCH(B1,A1))," ",""))+1
如果您可以访问 FILTERXML
,您可以通过输入一些 MATCH
来检索它,这将 return 精确 匹配:
=MATCH(B1,FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s"),0)
注意:第二个公式需要通过CtrlShift[=38输入=]输入
根据@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," ","")))),""))
注意:两个公式都需要通过CtrlShift[=38=输入]输入