Excel:使用文本functionfind中间
我想在Excel中使用文本函数从下面的string中提取Moss
Ariel
和Murphy
。
Gabriela Moss669.11695-5000-53420000000-1232 Connie Ariel1025.11695-2004-51490000000-1231 Kelly Murphy1040.58695-2200-50630000000-1235
我对使用文本函数有一个基本的把握,但是这个难倒了我。 任何帮助是极大的赞赏。
我需要做一个公式,使它不需要更改将其复制到logging列表中。
在Google表格或VBA UDF中这样做会更容易和更短,但这里是https://exceljet.net/formula/split-text-and-numbers中的另一个数组公式解决scheme(使用Ctrl + Shift + Enterinput )
=MID(A1,FIND(" ",A1)+1,MIN(FIND(ROW($1:$10)-1,A1&"0123456789"))-FIND(" ",A1)-1)
这可能没有数组公式的工作:
=MID(A1,FIND(" ",A1)+1,MIN(FIND({0,1,2,3,4,5,6,7,8,9,"."},A1))-FIND(" ",A1)-1)
说你的数据从A1开始
首先用下面的公式提取全名
[B1] = {LEFT(A1,MATCH(1,--ISNUMBER(--MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1)),0)-1)}
这是一个数组公式,在B1中键入公式后按Ctrl+Shift+Enter
。 然后填写公式到其余的行。
接下来,只需从全名中提取姓氏
[C1] = RIGHT(B1,LEN(B1)-SEARCH(" ",B1))
如果你喜欢这样做,那么在这里是公式
[B1] = {MID(A1,SEARCH(" ",A1)+1,MATCH(1,--ISNUMBER(--MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1)),0)-1-SEARCH(" ",A1))}
你可以直接使用下面的公式,不需要数组公式来实现这个。
=MID(A1,SEARCH(" ",A1,1)+1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))-SEARCH(" ",A1,1)-1)
你需要结合函数instr
和mid
。 instr
以子string(或单个字符)的第一次出现的stringforms返回索引。 mid
返回从给定位置开始且具有所提取的子串的长度的子串。 在你的情况下,像这样的:
MID(MyString,Index(MyString,"Moss"),Len("Moss"))
MyString
保存你的源string。