我将如何删除所有主要的字母字符?

我有兴趣从列中出现的单元格中删除主要的字母(alpha)字符。 我只希望删除前面的字母字符(包括UPPER和LOWER的情况):如果字母字符出现在数字后面,应该保留。 列中的某些单元格可能不包含前导字母字符。

这里是我所拥有的一个例子:

36173 PIL51014 4UNV22001 ZEB54010 BICMPAFG11BK BICMPF11 

请注意,不一定总是有相同数量的前导字母字符。 我不能简单地在Excel中使用Left或Right函数,因为我希望保留和删除的字符数量不同。

正在寻找的正确输出将如下所示:

 36173 51014 4UNV22001 54010 11BK 11 

注意倒数第二行如何保留字符“BK”,第三行保留“UNV”。 我不能简单地删除所有字母字符。

我是一个基本的初学者,并没有能够弄清楚如何使用Excel函数来解决我的问题。 我将如何做到这一点?

这里是一个Excel公式,它将“去掉主要的字母字符”实际上,它会查找第一个数字字符,然后返回所有内容:

 =MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&"0123456789")),99) 

最后的99需要比你可能处理的最长的string长一些。 99通常工作。

这是一个基于公式的解决scheme,完整的testing结果:

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

在这里输入图像说明

如果任何string可能超过100个字符,则在最后更改100。 255也是不需要的,但不会受到伤害。

这个简短的UDF应该去掉主要的字母字符。

 Function noLeadAlpha(str As String) If Not IsNumeric(str) Then Do While Asc(str) < 48 Or Asc(str) > 57 str = Mid(str, 2) If Not CBool(Len(str)) Then Exit Do Loop End If noLeadAlpha = str End Function 

udf_no_leading_alphas

Koodos Jeeped,你打败了我。

但无论如何,这是一个替代scheme:

 Function RemoveAlpha(aString As String) As String For i = 1 To Len(aString) Select Case Mid(aString, i, 1) Case "0" To "9" RemoveAlpha = Right(aString, Len(aString) - i + 1): Exit For End Select Next i End Function