Excel VBA 列番号から列名、列名から列番号に変換
エクセルのVBAで、列番号の数値がわかっていて、列名で処理したい時があります。
その時は以下の関数を作成すると便利です。
Option Explicit
Function 列番号から列名(ByVal colNum As Long) As String
列番号から列名 = Split(Columns(colNum).Address, "$")(2)
End Function
Function 列名から列番号(ByVal colName As String) As Long
列名から列番号 = Columns(colName).Column
End Function
上の図は、イミディエイトウィンドウで、結果を試しております。
列名は大文字の英字を返します。小文字にしたい場合は、? lcase(列番号から列名(1))とします。(Lcase関数)
列名から列番号を求める際に、列名は大文字小文字関係なく、絶対アドレスの$がついていても結果は同じです。
Columns関数が両方の変換で使いますので、肝(キモ)です。
列名は、Addressプロパティで列名を出して、Split関数で配列に分割します。
例えば、列番号1なら$A:$Aが返され、$で分割すると A: と Aが配列として返され、インデックス2番目はAなので、それが列名として返されます。
列番号は、Columnプロパティを使うと、簡単に求まります。
※ご意見もお待ちしております。
このブログへのコメントは muragonにログインするか、
SNSアカウントを使用してください。