【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」が渡されたとする。
- (28 - 1) / 26 の結果 1 が iConv1 に格納される。
- 28 - (1 * 26) の結果 2 が iConv2 に格納される。
- iConv1 > 0 が成り立つ。Chr(1 + 64) → Chr(65) → A が convColNumToAlpha に格納される。
- iConv2 > 0 が成り立つ。Chr(2 + 64) → Chr(66) → B となり、convColNumToAlpha に文字列結合され「AB」となる。
- 戻り値は「AB」
補足
Chr関数は引数に文字コードを指定すると、それに対応した値を返す。