列番号と列記号の変換方法

今回の目標

「AD列って数字にすると何列目だ?」や「RangeをCellsにしたいけど、列番号ってどうすれば…?」と、思ったあなたへ。 この記事では、列記号(A、AA、ZZなど)と列番号(数値)の変換方法を解説します!

目標リスト

  • 列記号(A、AA、ZZなど)から、列番号(数値)へ変換できるようになる
  • 列番号(数値)から、列記号(A、AA、ZZなど)へ変換できるようになる

列記号(A、AA、ZZなど)から列番号(数値)に変換する方法

列記号(A、AA、ZZなど)から列番号(数値)する方法は、RangeオブジェクトのColumnプロパティを使用します。Columnは列番号を返します。

サンプルコード

'列記号(A、AA、ZZなど)から列番号(数値)を変換する
Sub SymbolNumberSample1()
    Dim colString As String
    'D列目(4列目)
    colString = "D"
    Debug.Print colString & "の列番号:" & _
            Worksheets(1).Range(colString & "1").Column
End Sub
【実行結果】

Dの列番号:4

列番号(数値)から列記号(A、AA、ZZなど)に変換する方法

列番号(数値)から列記号(A、AA、ZZなど)に変換するには、Rangeオブジェクトのaddressプロパティを使用します。絶対参照形式($A$1形式)で返します。
列記号は$で囲われています。Split関数を使用して$で分割すると列記号を取得できます。

サンプルコード

'列番号(数値)から列記号(A、AA、ZZなど)に変換する
Sub SymbolNumberSample2()
    Dim address As String
    Dim colNumber  As Long
    
    '3列目(C列目)
    colNumber = 3
    'A1形式にする(「$C$1」となる)
    address = Worksheets(1).Cells(1, colNumber).address
    '「$C$1」をSplit関数で記号だけを取り出す
    Debug.Print colNumber & "列記号:" & Split(address, "$")(1)
End Sub
【実行結果】

3の列記号:C

関数化して、簡単に列記号と列番号の変換をする

列記号と列番号の変換を関数にして、気軽に使えるようにしましょう。
他のプロシージャから、値を取得する方法はFunctionプロシージャで戻り値を取得するを参照してください。

サンプルコード

'列記号(A、AA、ZZなど)から列番号(数値)を変換する
Function GetColumnSymbolToNumber(ByVal colString As String) As Long
    GetColumnSymbolToNumber = Worksheets(1).Range(colString & "1").Column
End Function

'列番号(数値)から列記号(A、AA、ZZなど)に変換する
Function GetColumnNumberToSymbol(ByVal colNumber As Long) As String
    Dim address As String
    address = Worksheets(1).Cells(1, colNumber).address
    GetColumnNumberToSymbol = Split(address, "$")(1)
End Function

'上記関数を使用するサンプル
Sub SymbolNumberSample3()
    Debug.Print "Eの列番号:" & GetColumnSymbolToNumber("E")
    Debug.Print "30の列記号:" & GetColumnNumberToSymbol(30)
End Sub
【実行結果】

Eの列番号:5
30の列記号:AD

関連リンク

ページの先頭へ