Excel:使用文本functionfind中间

我想在Excel中使用文本函数从下面的string中提取Moss ArielMurphy

 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) 

你需要结合函数instrmidinstr以子string(或单个字符)的第一次出现的stringforms返回索引。 mid返回从给定位置开始且具有所提取的子串的长度的子串。 在你的情况下,像这样的:

  MID(MyString,Index(MyString,"Moss"),Len("Moss")) 

MyString保存你的源string。