我将如何删除所有主要的字母字符?
我有兴趣从列中出现的单元格中删除主要的字母(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
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