非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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]

スポンサーリンク

 - Excel, VBA