自然数を、Excel の(A1方式の)列名に変更するサンプルです。
幾つかのサイトで同様の物を見つけたのですが、「702列目(ZZ)」までは正常なのに、「703列目(AAA)」以上になると、正しい結果を返さない物が目立っていたので、作ってみました。
Public Function GetColumnName(ByVal ColIndex As Long) As String
Const KEY As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim length As Long
length = Len(KEY)
Dim num As Long, keta As Long, n As Long
num = ColIndex
n = 1
Do Until num < n
num = num - n
n = n * length
keta = keta + 1
Loop
Dim i As Long
For i = 1 To keta
n = n \ length
GetColumnName = GetColumnName & Mid(KEY, (num \ n) + 1, 1)
num = num Mod n
Next
End Function
Public Function Xlex(ByVal TargetDec As Long) As String
Dim iDigit As Long
Xlex = ""
If TargetDec <= 0 Then Exit Function
Do
iDigit = TargetDec Mod 26
TargetDec = TargetDec \ 26
If iDigit = 0 Then
TargetDec = TargetDec - 1
End If
Xlex = Mid("ZABCDEFGHIJKLMNOPQRSTUVWXY", iDigit + 1, 1) & Xlex
Loop Until (TargetDec = 0)
End Function
100 万まで試して一致。速度的には 1 万回で 0.24 と 0.22 で私の勝ち。(^▽^)