我的弦就像; 例如:A2列:这是一个测试字符串。
我要提取单词“ 是”的位置。我知道我必须在此处使用MID函数进行搜索。
= MID(A2,SEARCH(“”,A2)+ 1,SEARCH(“”,A2)-2)<-返回'是'
说,我想搜索第二个出现的“”(意思是我不确定我的大型excel工作表中的字符长度。单词之间用连字符或空格分隔),因此我可以轻松提取出单词'是”,无需进行字符计算。
但是搜索会找到“”的第一个匹配项。 如何使用 search 或 find 来提取不带+ 1,-2字符计算的'is'单词?
答案 0 :(得分:3)
如果使所有空格的宽度与整个原始字符串的宽度相同,则可以轻松地选择带有MID的第二个单词并将其修剪为原始单词。
'first word
=trim(left(substitute(a2, " ", rept(" ", len(a2))), len(a2)))
'second word
=trim(mid(substitute(a2, " ", rept(" ", len(a2))), len(a2)*1, len(a2)))
'third word
=trim(mid(substitute(a2, " ", rept(" ", len(a2))), len(a2)*2, len(a2)))
'last word
=trim(right(substitute(a2, " ", rept(" ", len(a2))), len(a2)))
len(a2)*1
(MID的起点)是确定要提取哪个单词的维度。
答案 1 :(得分:3)
假设您不需要仅使用这些功能:
如果您的Excel版本包含FILTERXML
函数,则可以使用此公式提取第二个单词:
=INDEX(FILTERXML("<t><s>"&SUBSTITUTE(TRIM(A1)," ","</s><s>")&"</s></t>","//s"),2)
如果您的版本不具有该功能,则可以使用:
=INDEX(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),seq_99,99)),2)
其中seq_99
是命名公式:
seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
两者都将字符串分割成一个数组,然后使用INDEX
函数返回该数组中所需的元素。
您可能需要修改函数的SUBSTITUTE
部分,以同时处理空格和连字符,或其他任何定界符。
答案 2 :(得分:1)
您可以使用中点搜索字符串的下一部分,以获取第一部分之后的其余部分,然后搜索该子字符串。
Value Description Formula
This is a test string Original string #N/A
5 Pos of first space =SEARCH(" ",A2)
is a test string Rest of string =MID(A2,A3+1,LEN(A2))
3 Rel pos 2nd space =SEARCH(" ",A4)
is Extracted “is” =MID(A2,A3+1,A5-1)
Combined formula:
=MID(A2,SEARCH(" ",A2)+1,SEARCH(" ",MID(A2,SEARCH(" ",A2)+1,LEN(A2)))-1)
如果要查找的定界符多于前两次,此方法将变得更加复杂,但是如果您有除空格以外的定界符,则该方法可能比另一个方法简单。
答案 3 :(得分:1)