String 从包含子字符串中特定字符的字符串中提取单词

String 从包含子字符串中特定字符的字符串中提取单词,string,excel,excel-formula,text-extraction,String,Excel,Excel Formula,Text Extraction,在MS Excel中,我希望使用公式仅从包含文本中特定字符(“=”)的单元格中提取单词 多莉给我做了一个自制的蛋糕和一些松饼 我们晚餐吃奶酪=蛋糕 A4:每个人都喜欢面包店做一些很棒的蛋糕 强尼昨晚自己做了晚餐,然后打扫了厨房 答6:俄克拉荷马州下了大量的雨 我希望在第(A2:A4)列中提供以下结果(B2:B4) B2:自制=蛋糕 B3:奶酪=蛋糕 B4:棒极了=蛋糕 晚餐=昨晚 B6:州=俄克拉荷马州 我尝试了几种方法,有些方法比其他方法更接近,但如果可能的话,我无法找到它。我使用了5个帮助器

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

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

我们晚餐吃奶酪=蛋糕

A4:每个人都喜欢面包店做一些很棒的蛋糕

强尼昨晚自己做了晚餐,然后打扫了厨房

答6:俄克拉荷马州下了大量的雨

我希望在第(A2:A4)列中提供以下结果(B2:B4)

B2:自制=蛋糕

B3:奶酪=蛋糕

B4:棒极了=蛋糕

晚餐=昨晚

B6:州=俄克拉荷马州


我尝试了几种方法,有些方法比其他方法更接近,但如果可能的话,我无法找到它。

我使用了5个帮助器列来实现这一点;它们可以折叠成一个很长的forumula,但我更喜欢这种方式(我认为更容易找到任何错误的来源)。给定A2中的字符串;在B2中,这将找到“=”的位置

在C2中,它会在“=”之前找到“”的实例号

在D2中,此注释说明了“”的位置

在E2中,这将定位“=”后面的“”,或者如果“=”出现在单元格的最后一个字中,它将记录整个单元格长度+1

=IFERROR(SEARCH(" ",A2,B2),LEN(A2)+1)  
在F2中使用这些值将字符串从前面的“”拉到后面的“”


使用一个旧的文本解析技巧,该技巧可以大大增加通过和重复零的单词之间的距离,从而提供更大的目标子字符串的滑动

B2中的公式为

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

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

您能告诉我
99
50
在这个公式中的意义吗。抱歉,我听不懂。
替换词(A2,“,REPT(“,99))
将句子中的每一个空格变成99个空格,因此单词非常分散。找到=符号后,我们返回50个字符(这将使我们处于99个空格分隔的中间位置,然后收集接下来99个字符的所有内容。剩下的是。修剪将去除不需要的前导/尾随空格。如果要检索的子字符串较大,只需替换为999和500。聪明的主意。感谢您的澄清。Michael感谢它起作用了p。)完美地-:)提供的两个答案都有效,但在本例中,公式数组越短,并且只使用一个单元格列效果越好。
=SEARCH(CHAR(33),SUBSTITUTE(A2," ",CHAR(33),C2))  
=IFERROR(SEARCH(" ",A2,B2),LEN(A2)+1)  
=MID(A2,D2+1,E2-D2-1)
=TRIM(MID(SUBSTITUTE(A2, " ", REPT(" ", 99)), MAX(1, FIND("=", SUBSTITUTE(A2, " ", REPT(" ", 99)))-50), 99))