14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ExcelVBA】列名のアルファベットと列番号の数字を相互変換する

Last updated at Posted at 2020-07-14

RangeとCellsでセルの指定方法が違う

Rangeは基本は列名のアルファベット+行番号の数字の文字列、Cellsは行番号と列番号をそれぞれ数字で指定するじゃないですか。
たまに列番号をアルファベットに変換したいとか、その逆があるわけです。
そんな時にはこの関数の出番。

2020/07/20 コメントよりコードに反映
@takahasinaoki さん、ご指摘とご提案ありがとうございました!

列番号(数字)を列名(アルファベット)に変換

引数の列番号の列全体の絶対参照アドレスを取得して$Splitして列名取得。

' 列番号→列名
Function ColumnIdx2Name(ByVal colNum As Long) As String
    ColumnIdx2Name = Split(Columns(colNum).address, "$")(2)
End Function

列名(アルファベット)を列番号(数字)に変換

引数のアルファベットの列全体から列番号取得。

' 列名→列番号
Function ColumnName2Idx(ByVal colName As String) As Long
    ColumnName2Idx = Columns(colName).column
End Function

特に列番号→列名は、文字コードが~とか、A~Zが26文字だから~とか、AZ列以降だと~とか、いろいろ考えたんだけど、面倒になってきたのでおそらく一番面倒じゃない方法に行きつきました。
ワンライナーで書けるものはワンライナーがいいよね。後々読んでもわかりやすいし。

14
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?