网友“胡永炽”提的一个问题,如何实现字符串递增 http://www.accessoft.com/bbs/showtopic.asp?id=11526
实际上就是类似于Excel中的列序号,从A开始,A、B、C……AA、AB、AC……AAA、AAB、AAC……
由于字母有26个,因此我们可以将其它视为一个二十六进制的数来处理,由于计算机本身并没有提供二十六进制的计算功能,所以需要先转换为十进制,然后通过十进制进行计算,再将计算结果转换为二十六进制即可。
'将表示二十六进制字符串转换为十进制数值
'红尘如烟 2011-2-15
Function Hex26To10(Number As String) As Double
Dim intI As Integer
Dim strChar As String
Dim intPos As Integer
Const conStrList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
For intI = Len(Number) To 1 Step -1
strChar = Mid(Number, intI, 1)
intPos = InStr(1, conStrList, strChar) - 1
Hex26To10 = Hex26To10 + intPos * 26 ^ (Len(Number) - intI)
Next
End Function
'将十进制数值转换为表示二十六进制的字符串
'红尘如烟 2011-2-15
Function Hex10To26(Number As Double) As String
Dim dblNum As Double
Const conStrList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
dblNum = Number
Do Until dblNum = 0
Hex10To26 = Hex10To26 & Mid(conStrList, (dblNum Mod 26) + 1, 1)
dblNum = dblNum \ 26
Loop
Hex10To26 = StrReverse(Hex10To26)
End Function
|
示例: =Hex10To26(Hex26To10("ZZ")+1) '返回 BAA
l