Excel如何在遇到第一个string中的Alpha后停止LEFT公式

所以我试图提取一个特定部分的文本string(部件号)的查找,

我有一个公式,给出了我想要的大多数情况下的零件编号,在到达文本string中的最后一个编号后停止LEFT公式。 一些零件号在文本string中有更多数字。

我需要公式返回文本string,直到最后一个数字,但停止一旦它又变回到阿尔法。 我希望这是有道理的,我附上了一个截图来举例说明问题和我的代码。 如果你看R栏,看FR70YERXX / 3,那应该在Y之前停下来,但是我根本无法把头转过来。 Excel查找公式问题

=LEFT(J2,MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},J2,ROW(INDIRECT("1:"&LEN(J2)))),0))) 

将以下代码放入Excel中的模块中

 Function LeftCode(s As String) As String i = 1 While Not ((Mid(s, i, 1) >= "0") And (Mid(s, i, 1) <= "9")) And (i <= Len(s)) i = i + 1 Wend If i > Len(s) Then LeftCode = s Else While Not ((Mid(s, i, 1) < "0") Or (Mid(s, i, 1) > "9")) And (i <= Len(s)) i = i + 1 Wend If i > Len(s) Then LeftCode = s Else LeftCode = Left(s, i - 1) End If End If End Function 

然后在R栏中input:

 =LeftCode(J2) 

并复制下来

结果

说明

创build一个函数来获取一个string并返回一个string

 Function LeftCode(s As String) As String 

从第一个字符开始,一次遍历string一个字符,直到find一个数字(0-9)

 i = 1 While Not ((Mid(s, i, 1) >= "0") And (Mid(s, i, 1) <= "9")) And (i <= Len(s)) i = i + 1 Wend 

如果我们已经到了最后,没有数字,那就把它全部归还

 If i > Len(s) Then LeftCode = s 

否则,继续遍历每个字符,直到find一个非数字

 Else While Not ((Mid(s, i, 1) < "0") Or (Mid(s, i, 1) > "9")) And (i <= Len(s)) i = i + 1 Wend 

如果我们达到目的,那么我们就需要整个事情

  If i > Len(s) Then LeftCode = s Else 

否则,我们想要最后一个字符

  LeftCode = Left(s, i - 1) End If End If End Function 

看来你想截断,直到数字的第一个组合后面是非数字 。 如果是这样的话:

 =LEFT(H2,AGGREGATE(15,6,ROW($1:$98) /ISNUMBER(VALUE(MID(H2,ROW($1:$98),1))) /ISERROR(VALUE(MID(H2,ROW($2:$99),1))),1)) 

在这里输入图像说明

解决scheme1

如果你愿意使用,那么我可以给你一个长长的难看的配方。 尝试这个

 =-LOOKUP(1,-LEFT(MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1),ROW(INDIRECT("1:"&LEN(MID(A1,MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1)-MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))+1)))))) 

请参阅图片以供参考。

在这里输入图像说明

解决scheme2

使用助手列

Cell B2input下面的公式来获取第一个数字的位置

 =MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")) 

然后在Cell C2中删除第一个数字前面的字母后inputstring

 =RIGHT(A2,LEN(A2)-B2+1) 

最后,在Cell D2input下面的公式

 =IFERROR(-LOOKUP(1,-LEFT(C2,ROW(INDIRECT("1:"&LEN(C2))))),"") 

根据需要拖放/复制。 请参阅图片以供参考。

在这里输入图像说明