HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > 数値から列番号を取得する

数値から列番号を取得する|Excel VBA

セル操作関連のテクニック

数値から列番号を取得する

(Excel 2000/2002/2003/2007/2010/2013)

Excelの列番号はA・B・C…で表しますが、VBAでセルを操作するとき、列を数値で指定したいこともあります。小さい数字なら、1 はA列、2 はB列と、脳内で変換することも簡単ですが、21や24など大きい数字の列番号となると、間違えやすくなりますね。

列番号を調べるには、次のように半角英数字のアスキーコードを利用する手もあります。

Sub Sample1()
    Dim num As Long
    num = InputBox("列の数字を入力してください")
    MsgBox Chr(num + 64)
End Sub

大文字Aのアスキーコードは 65 なので、指定された数値に 64 を加算しています。
しかし、この方法では AA列以降には対応できません。

こんなときはAddressプロパティを使うと便利です。

MsgBox Cells(1, 27).Address

を実行すると「$AA$1」のような文字列が返ります。
Addressプロパティには引数があり、行と列のそれぞれを、絶対参照または相対参照で表すことが可能です。

MsgBox Cells(1, 27).Address(True, False)

を実行すると、「AA$1」のように行番号だけが絶対参照で表されます。
このアドレスは「$」より左側が列番号となっているので、次のようにすると列番号だけを取得できます。

Sub Sample2()
    Dim num As Long, buf As String
    num = InputBox("列の数字を入力してください")
    buf = Cells(1, num).Address(True, False)
    buf = Left(buf, InStr(buf, "$") - 1)
    MsgBox buf
End Sub