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]
スポンサーリンク