第一个数字元素后分割string

有人知道Excel中的一个函数可以分开这个:

Tottenham Court Road 28 Apartment 8

Tottenham Court Road 28Apartment 8 Tottenham Court Road 28 Apartment 8

像“在第一个数字之后 – 分到另一个列”。

公式方法的较短版本:

左边

 =TRIM(LEFT(A1,FIND(" ",A1, MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A1),""))))) 

右边

 =TRIM(MID(A1,FIND(" ",A1,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A1),""))),LEN(A1))) 

都作为数组公式input(按Ctrl-Shift-Enter)

这应该工作:

左边:

 =TRIM(LEFT(A1,FIND(" ",A1,MIN(IFERROR(FIND(0,A1),LEN(A1)),IFERROR(FIND(1,A1),LEN(A1)),IFERROR(FIND(2,A1),LEN(A1)),IFERROR(FIND(3,A1),LEN(A1)),IFERROR(FIND(4,A1),LEN(A1)),IFERROR(FIND(5,A1),LEN(A1)),IFERROR(FIND(6,A1),LEN(A1)),IFERROR(FIND(7,A1),LEN(A1)),IFERROR(FIND(8,A1),LEN(A1)),IFERROR(FIND(9,A1),LEN(A1)))))) 

右边:

 =TRIM(MID(A1,FIND(" ",A1,MIN(IFERROR(FIND(0,A1),LEN(A1)),IFERROR(FIND(1,A1),LEN(A1)),IFERROR(FIND(2,A1),LEN(A1)),IFERROR(FIND(3,A1),LEN(A1)),IFERROR(FIND(4,A1),LEN(A1)),IFERROR(FIND(5,A1),LEN(A1)),IFERROR(FIND(6,A1),LEN(A1)),IFERROR(FIND(7,A1),LEN(A1)),IFERROR(FIND(8,A1),LEN(A1)),IFERROR(FIND(9,A1),LEN(A1)))),999)) 

假设所提供的示例可能是许多(即使所有类似的格式)之一,但是一种方法是将ColumnA(假设是您的数据所在的位置)复制到ColumnE,但是没有经过testing,那么将Text应用于Columns,其中的空格为分隔符,然后在B1:

 =TRIM(LEFT(A1,FIND(OFFSET(E1,,MATCH(INDEX(E1:Z1,MATCH(1,INDEX(ISNUMBER(E1:Z1)+0,0),0)),E1:Z1,0)),A1)-1)) 

在C1中:

 =TRIM(MID(A1,FIND(OFFSET(E1,,MATCH(INDEX(E1:Z1,MATCH(1,INDEX(ISNUMBER(E1:Z1)+0,0),0)),E1:Z1,0)),A1),LEN(A1))) 

与两个拷贝适合。

假设你的原始地址是在单元格A2中,我build议使用一大堆帮助者列,你会在事后隐藏。 这使您可以在每列中使用简单的公式,这有助于debugging。

考虑到这一点,这个解决scheme与Taosique提供的方法一样,只是规定了我喜欢做这些事情的方式。


我会使用列标题:

  • 地址,0,1,2,3,4,5,6,7,8,9,第一个数字,空格,输出1,输出2

即重要的列B到K包含所有的数字。 这些列中的每一列都将用于search0到9中的每一个数字。


在B2中使用此公式,复制到K2。 它会给你任何find的数字的偏移量:

 =IFERROR(search(B$1,$A2),len($A2)) 

L2通过取前几列的最小值find第一位:

 =min(B2:K2) 

M2find这个数字后的第一个空格,给你你想要的分割索引:

 =search(" ",$A2,L2) 

N2和O2只是根据上面find的索引,将string的LEFTRIGHT

 =left($A2,M2-1) =right($A2,len($A2)-M2) 

简单的公式分布在列上 – 现在隐藏列,你们都被设置了。

在这里输入图像说明

如果将来您的分割string的公式会发生变化,您可以轻松地修改简单的公式。

公式是可能的,但在这里并不可行。 假设您的全文位于单元格A1

 Tottenham Court Road 28 Apartment 8 

然后在单元格B1我们将确定第一个数字后的第一个空格的索引

 =SEARCH(" ",A1,IFERROR(SEARCH("0",A1),IFERROR(SEARCH("1",A1),IFERROR(SEARCH("2",A1),IFERROR(SEARCH("3",A1),IFERROR(SEARCH("4",A1),IFERROR(SEARCH("5",A1),IFERROR(SEARCH("6",A1),IFERROR(SEARCH("7",A1),IFERROR(SEARCH("8",A1),IFERROR(SEARCH("9",A1),1))))))))))) 

知道这一点,在C1单元格中我们有第一部分的expression:

 =LEFT(A1,B1-1) 

D1单元格中我们有第二部分:

 =MID(A1,B1+1,LEN(A1))