Excelの列(Aなど)とCellsなどの列番号(1)に変換

Excelの列(Aなど)とCellsなどの列番号(1)に変換

おためしでソースなど公開してみることにしました。
アクセスアップを目指します。

引数が”AA”だったら27を返却、またはその逆をしたいなーと思い
軽くググってもでてこなかったので自分で実装しました。
よろしければどうぞ。

テストしたけど、バグってたらソーリーソーリー ひげソーリー。

Private Function getAto1(ByVal strCol As String) As Long

    Dim lngCnt As Long
    Dim strBuf As String
    Dim lngRet As Long
    Dim i As Long
    
    strCol = UCase(strCol)
    lngCnt = Len(strCol)
    lngRet = 0
    
    For i = 0 To lngCnt - 1
        strBuf = Mid$(strCol, lngCnt - i, 1)
        lngRet = lngRet + (Asc(strBuf) - Asc("A") + 1) * (26 ^ i)
    Next

    getAto1 = lngRet

End Function
Private Function get1toA(ByVal lngCol As Long) As String

    Dim strRet As String
    Dim lngAns As Long

    '1~26の列番号を0~25に変換
    lngCol = lngCol - 1

    Do Until lngCol < 0

        lngAns = (lngCol Mod 26)

        strRet = Chr$(Asc("A") + lngAns) & strRet

        '右シフト
        lngCol = Fix(lngCol / 26) - 1

    Loop

    get1toA = strRet

End Function

ABOUTこの記事をかいた人

はてなブックマークで驚愕の1600越えを記録した伝説が今明らかに! エクセル方眼紙 四天王の1人(ほぼ最弱)窓の杜大賞2014 大賞受賞! Excelを便利にする250以上の機能を体系化したアドインはこちらです。