从包含子string中的特定字符的string中提取一个字
在MS Excel中,我想使用公式从文本中只包含特定字符(“=”)的单元格中提取单词。
A2:多莉给我做了一个自制的蛋糕和一些松饼
A3:我们吃了奶酪=蛋糕吃晚饭
A4:每个人都喜欢这家面包店如何制作一些很棒的蛋糕
A5:约翰尼自己晚餐=昨天晚上,然后清理厨房
A6:有大量的国家=俄克拉何马州
我想从栏目(A2:A4)中的以下内容在栏目(B2:B4)中提供以下结果。
B2:自制=蛋糕
B3:芝士=蛋糕
B4:真棒=蛋糕
B5:晚餐=昨晚
B6:州=俄克拉荷马州
我已经尝试了几种方法,比其他方法更接近一些,但是如果可能的话,却无法弄清楚。
使用旧的文本parsing技巧,通过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)