如何使用Excel函数(LEFT / RIGHT / MID)提取由相同符号围绕的字符串?

时间:2019-03-07 05:45:26

标签: excel excel-formula

我的弦就像; 例如:A2列:这是一个测试字符串

我要提取单词“ ”的位置。我知道我必须在此处使用MID函数进行搜索。

= MID(A2,SEARCH(“”,A2)+ 1,SEARCH(“”,A2)-2)<-返回''

说,我想搜索第二个出现的“”(意思是我不确定我的大型excel工作表中的字符长度。单词之间用连字符或空格分隔),因此我可以轻松提取出单词'”,无需进行字符计算。

但是搜索会找到“”的第一个匹配项。 如何使用 search find 来提取不带+ 1,-2字符计算的'is'单词?

4 个答案:

答案 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)

修改您的以下公式并尝试:

=MID(A1,FIND(" ",A1,1)+1,FIND(" ",A1,FIND(" ",A1)+1)-FIND(" ",A1,1)-1)

enter image description here