从包含子string中的特定字符的string中提取一个字

在MS Excel中,我想使用公式从文本中只包含特定字符(“=”)的单元格中提取单词。

A2:多莉给我做了一个自制的蛋糕和一些松饼

A3:我们吃了奶酪=蛋糕吃晚饭

A4:每个人都喜欢这家面包店如何制作一些很棒的蛋糕

A5:约翰尼自己晚餐=昨天晚上,然后清理厨房

A6:有大量的国家=俄克拉何马州

我想从栏目(A2:A4)中的以下内容在栏目(B2:B4)中提供以下结果。

B2:自制=蛋糕

B3:芝士=蛋糕

B4:真棒=蛋糕

B5:晚餐=昨晚

B6:州=俄克拉荷马州

我已经尝试了几种方法,比其他方法更接近一些,但是如果可能的话,却无法弄清楚。

使用旧的文本parsing技巧,通过SUBSTITUTE和REPT函数大大增加了重复的零之间的距离,从而提供更大的预期子串的轻扫。

使用SUBSTITUTE和REPT解析子字符串

B2中的公式是,

=TRIM(MID(SUBSTITUTE(A2, " ", REPT(" ", 99)), MAX(1, FIND("=", SUBSTITUTE(A2, " ", REPT(" ", 99)))-50), 99)) 

TRIM函数 (用作包装)删除前导和尾随空格。

我用了5个帮手列做这个; 他们可以被折叠成一个非常长的论坛,但我更喜欢这样(更容易追踪我认为的任何错误的来源)。 给定你在A2中的string; 在B2中,find“=”的位置

 =SEARCH("=",A2) 

在C2中,查找“=”之前的“”的实例编号

 =B2-LEN(SUBSTITUTE(MID(A2,1,B2)," ","")) 

在D2中注意到“”的位置

 =SEARCH(CHAR(33),SUBSTITUTE(A2," ",CHAR(33),C2)) 

在E2中find“”后面的“=”,或者如果“=”出现在单元格的最后一个单词中,它会logging整个单元格长度+1

 =IFERROR(SEARCH(" ",A2,B2),LEN(A2)+1) 

在F2中使用这些值将string从前面的“”拖到“”后面的“”

 =MID(A2,D2+1,E2-D2-1)