将字母转换为VBA中的数字

寻找一些build议。 我有单元格中的字母和数字组合的单元格值。 每个值是6个字母,然后是0000,然后是4个字母,然后是5到8个数字。 例如

IIKBAR0000EEEE510002 MQYUQF0000EEEE410003 MWWVIQ0000ZYXW210004 DJHZXL0000BBBB410005 

这些或多或less是完全随机的,其中有10万到1048576个!

有什么办法可以将字母转换成数字(即A = 1,B = 2,Z = 26等),而不必告诉VBA每个字母的值? 我目前使用的代码非常慢,因为它有26个If-Else情况。

我认为这个UDF将为你工作:

 Option Explicit Function ConvertLetterToNumber(ByVal strSource As String) As String Dim i As Integer Dim strResult As String For i = 1 To Len(strSource) Select Case Asc(Mid(strSource, i, 1)) Case 65 To 90: strResult = strResult & Asc(Mid(strSource, i, 1)) - 64 Case Else strResult = strResult & Mid(strSource, i, 1) End Select Next ConvertLetterToNumber = strResult End Function 

它会将每个非数字值转换成与其等价的Ascii值,然后将其降低到等效的字母表(A = 1,B = 2等)。 只要使用它作为一个正则expression式。 注意:它假定您的非数字值是大写。

附录

如上所述的代码将在不到2分钟的时间内使用第四代i5处理器和8GB RAM返回250,000行。