ExcelVBAで番号から列アルファベットを簡単に取得する方法(2桁アルファベット対応)
VBAでExcelを制御していると、数字から列アルファベットを取得したいときがあります。
そんなとき、こんな力技でやっていませんか?
Sub Test1()
Dim ColNum As Variant
ColNum = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", _
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", _
"U", "V", "W", "X", "Y", "Z")
Dim num As Long
num = InputBox("列Noを入力してください")
MsgBox (ColNum(num))
End Sub
扱う列の範囲が狭いときはこれでも良いのですが、多くの列数をカバーするのはちょっとしんどいです。
そんな時はもっとスマートな方法があります。
[ad#top-1]
キャラクターコードから取得する
Chr(コード)で数字からアルファベットに変換できます。Chr(65)が「A」なので以下のようになります。
Sub Test2()
Dim num As Long
num = InputBox("列の数字を入力してください")
MsgBox (Chr(num + 64))
End Sub
このようにInputBoxに数値を入れればそれに対応したアルファベットが取得できます。
しかしこれだと、AからZまでしか対応できません。
ExcelはZを過ぎたらAAのように2桁になるのでそれに対応できるようにします。
Sub Test3()
Dim num As Long
num = InputBox("列の数字を入力してください")
head = ""
If num > 26 Then
head = Chr(Fix((num - 1) / 26) + 64)
End If
num = (num - 1) Mod 26 + 1
MsgBox (head & Chr(num + 64))
End Sub
例えば40と入力したらANと出るようになります。
但し、これがカバーできるのは2桁アルファベットのみ。Excelには3桁まであるのでそこまで必要な人は同じ要領で3桁まで対応させましょう。
[ad#ad-1]
スポンサーリンク


