列番号と列記号の変換方法
今回の目標
「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