将string中的文本两个字提取到分隔符值的左边
这个问题不是以前发布的Excel问题的重复,而是这个问题正在寻求提取分隔符左侧的单词; 而之前发布的问题将词语提取到分隔符右侧。
使用MS Excel,我想在分隔符值“^”的左边提取两个单词(三个空格),包括提取带有/附加分隔符“^”的标识符单词
示例:单元格A2
约翰尼和我打算去看电影看蝙蝠侠归来,但是到了晚了。
结果:细胞B2
去看^蝙蝠侠
可能有一些更好的解决scheme,但这里是我有:
=MID(LEFT(A1,FIND(" ",A1;FIND("^",A1))-1),FIND("^",SUBSTITUTE(A1," ","^",LEN(LEFT(A1,FIND("^",A1)))-LEN(SUBSTITUTE(LEFT(A1,FIND("^",A1))," ",""))-2))+1,9999)
核心是: LEN(LEFT(A1,FIND("^",A1)))-LEN(SUBSTITUTE(LEFT(A1,FIND("^",A1))," ",""))
它计算从string开始直到你的分隔符的空间,然后用anoter分隔符replacecount - 2
空格#以find你的开始FIND("^",SUBSTITUTE(A1," ","^",LEN(...)-LEN(...)-2))+1
这样做一个string结束较早LEFT(A1,FIND(" ",A1;FIND("^",A1))-1)
(你不需要做长期第二次)
一个非VBA公式的方法是可能的(可能作为一个数组公式),但会像用黄油刀做雕塑。 这是一个可以用作UDF的VBA函数:
Function ExtractLeft(str As String, delim As String, words As Long) As String Dim i As Long, n As Long Dim A As Variant Dim left_words As String, right_word As String A = Split(str, delim) right_word = A(1) right_word = Split(right_word)(0) right_word = delim & right_word left_words = A(0) A = Split(Trim(left_words)) n = UBound(A) For i = n To n - words + 1 Step -1 right_word = A(i) & " " & right_word Next i ExtractLeft = right_word End Function
VBA方法的优点是可以轻松地更改分隔符和要提取的单词数量: