【VBA】数字を列番号(アルファベット)に変換する

エクセルVBAでよく使うコードの備忘録。Excelでは列番号はA、B、Cなどのアルファベットで表されますが、VBAを使い数字を列番号に変換するコード。列番号から数字への変換も合わせて説明します。

スポンサーリンク

数字を列番号に変換する

数字を列番号に変換するにはAddressプロパティを使用するのが簡単です。

Addressプロパティ

Cells([行番号], [列番号]).Address([行の相対参照 ], [列の相対参照])

ちなみに相対参照か絶対参照かを指定する引数はTRUEかFALSEで指定します。TRUEにすれば絶対参照の形式($が付いた形式)でアドレスを表す文字列が返されます。

列番号を取得するには、行の相対参照のみをTRUEにして値を取得します。すると「A$1」のようなアドレスが返されるので、「$」よりも左側を抽出すれば列番号が取得できます。

数字を列番号に変換する

Public Sub GetColumnStr()

    '--- 取得したい列番号の数字 ---'
    Dim colNum As Long
    colNum = [列番号]
    
    '--- アドレス文字列 ---'
    Dim tmpStr as String
    tmpStr = ThisWorkbook.Worksheets("[ワークシート名]").Cells(1, colNum).Address(True, False)

    '--- 列番号を格納する変数 ---'
    Dim colAddress as String
    colAddress = Left(tmpStr, InStr(tmpStr, "$") - 1)

End Sub

列番号を数字に変換する

列番号を数字に変換するのは、RangeオブジェクトのColumnプロパティを使うことで実現できます。数字に変換したい列番号のRangeオブジェクトに対してColumnプロパティを取得してやればほしい値が手に入ります。

列番号を数字に変換する

Public Sub GetColumnNumber()
    
    '--- ワークシートオブジェクトを設定 ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("sheet1")
    
    '--- 数字に変換したい列番号 ---'
    Dim colAddress As String
    colAddress = "Z"
    
    '--- 列番号の数字を格納する変数 ---'
    Dim n As Long
    n = ws.Range(colAddress & "1").Column
    
End Sub