【VBA】列番号をアルファベットに変換する

サンプルコード
Function convColNumToAlpha(ByVal ColNum As Integer) As String

    Dim iConv1 As Integer
    Dim iConv2 As Integer
    
    iConv1 = Int((ColNum - 1) / 26)
    iConv2 = ColNum - (iConv1 * 26)
    
    If iConv1 > 0 Then
        convColNumToAlpha = Chr(iConv1 + 64)
    End If
    
    If iConv2 > 0 Then
        convColNumToAlpha = convColNumToAlpha & Chr(iConv2 + 64)
    End If

End Function


引数

変換したい列番号をint型で渡す。
尚、列番号とは以下のようにして取得できる。

Range("A1").Column
Range("E1").Column

上記の場合、A列なら1, E列なら5が得られる。

処理解説

仮に列番号「28」が渡されたとする。

  1. (28 - 1) / 26 の結果 1 が iConv1 に格納される。
  2. 28 - (1 * 26) の結果 2 が iConv2 に格納される。
  3. iConv1 > 0 が成り立つ。Chr(1 + 64) → Chr(65) → A が convColNumToAlpha に格納される。
  4. iConv2 > 0 が成り立つ。Chr(2 + 64) → Chr(66) → B となり、convColNumToAlpha に文字列結合され「AB」となる。
  5. 戻り値は「AB」

補足

Chr関数は引数に文字コードを指定すると、それに対応した値を返す。