Excelのカラム名(26進数ぽ)を数値(10進数)へ変換。

http://d.hatena.ne.jp/zecl/20090206/p1
c#しかなかったので、VB.NET版を書いた。

Public Shared Function ToAlphabet(ByVal nNumber As Integer) As String
    If nNumber <= 0 Then Return ""

    Dim nWorkNum As Integer = nNumber Mod 26
    nWorkNum = IIf(nWorkNum = 0, 26, nWorkNum)
    Dim sWorkStr As String = (Chr(nWorkNum + 64)).ToString()
    If nNumber = nWorkNum Then Return sWorkStr
    Return CnvColN2A((nNumber - nWorkNum) / 26) + sWorkStr
End Function

Public Shared Function ToInt(ByVal sAlphabet As String) As Integer
    Dim sResult As Integer = 0
    If String.IsNullOrEmpty(sAlphabet) Then Return sResult

    Dim cCharAry As Char() = sAlphabet.ToCharArray()
    Dim nLen As Integer = sAlphabet.Length - 1

    For Each c As Char In cCharAry
        Dim nAscNum As Integer = Asc(c) - 64
        If nAscNum < 1 Or nAscNum > 26 Then Return 0

        sResult += nAscNum * CType(Math.Pow(26, nLen), Integer)
        nLen -= 1
    Next

    Return sResult
End Function