【Excel VBA】数値の列番号をアルファベットの列名(A, B, AA列など)に変換する方法

VBAでForループを使い列を順番に処理する場合、Cells(行番号, 列番号)のように、列を数値で扱うのが一般的です。しかし、処理の過程で「28番目の列」を「AB列」のように、見慣れたアルファベットの列名に変換したい場面が出てきます。

残念ながら、VBAにはこの変換を直接行うColumnNumberToLetter()のような関数は用意されていません。しかし、セルの.Addressプロパティの特性を利用した簡単なテクニックで、この変換を実現できます。

この記事では、そのスマートな変換方法を、再利用しやすい関数として紹介します。


目次

完成したVBAコード(再利用可能な関数)

以下が、列番号を引数として渡すと、対応する列名を返すFunction(自作関数)です。この関数を標準モジュールにコピーしておけば、いつでも自分のマクロから呼び出して使えます。

' 列番号をアルファベットの列名に変換する関数
Function ConvertColumnNumberToLetter(ByVal colNumber As Long) As String

    Dim result As String
    
    ' 列番号が有効な範囲内かチェック
    If colNumber > 0 And colNumber <= Columns.Count Then
        ' .Addressプロパティを利用して列名を取得
        result = Split(Cells(1, colNumber).Address, "$")(1)
    Else
        result = "Error"
    End If
    
    ConvertColumnNumberToLetter = result

End Function


' --- 上記関数の使い方を示すサンプルコード ---
Sub Demo_GetColumnLetter()

    Dim columnNum As Long
    Dim columnLetter As String
    
    ' 例1: 28番目の列名を取得
    columnNum = 28
    columnLetter = ConvertColumnNumberToLetter(columnNum)
    MsgBox columnNum & "番目の列名は「" & columnLetter & "」です。" ' -> 結果: 「AB」
    
    ' 例2: 255番目の列名を取得
    columnNum = 255
    columnLetter = ConvertColumnNumberToLetter(columnNum)
    MsgBox columnNum & "番目の列名は「" & columnLetter & "」です。" ' -> 結果: 「IU」

End Sub

コードのポイント解説(変換の仕組み)

このテクニックの核心部分は、Split(Cells(1, colNumber).Address, "$")(1)という一行にあります。これを分解して見ていきましょう。

1. Cells(1, colNumber)

まず、変換したい列番号(colNumber)を使い、その列のいずれかのセルを参照します。どの行でも良いため、一番シンプルな1行目を指定します。例えばcolNumber28なら、これはAB1セルを指します。

2. .Address

次に、そのセルの.Addressプロパティを取得します。引数を省略した場合、このプロパティは絶対参照形式のセルアドレスを文字列として返します。 Cells(1, 28).Address は、文字列 "$AB$1" を返します。

3. Split(..., "$")

Split関数を使い、取得した文字列"$AB$1"を、区切り文字"$"で分割します。これにより、以下の3つの要素を持つ配列が作成されます。

  • (0): “” (最初の$の前なので空)
  • (1): “AB”
  • (2): “1”

4. (...)(1)

Splitで作成された配列は0から始まるため、その2番目(インデックス番号1)の要素を取り出します。これが、目的の列名"AB"となります。

この一連の流れにより、どんな列番号でもアルファベットの列名に変換できるのです。


まとめ

VBAで数値の列番号をアルファベットの列名に変換するには、直接的な関数はありませんが、.AddressプロパティとSplit関数を組み合わせたトリックで簡単に実現できます。

Split(Cells(1, 列番号).Address, "$")(1)

この一行で変換できることを覚えておくと非常に便利です。今回紹介したFunctionを自分の標準モジュールに保存しておけば、様々なマクロ開発の場面で役立つでしょう。

副業から独立まで「稼げる」Webスキルを習得する(PR)

ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次