エクセル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