Excel の列番号をアルファベット文字に変換する方法

概要

この記事では、Microsoft Excel の Microsoft Visual Basic for Applications (VBA) 関数を使用して、列番号を同じ列の対応するアルファベット文字指定子に変換する方法について説明します。

たとえば、列番号 30 は、同等のアルファベット文字 "AD" に変換されます。

詳細情報

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

ConvertToLetter 関数は、次のアルゴリズムを使用して機能します。

  1. 列番号を指定します iCol 。 が 1 未満の場合 iCol は停止します。
  2. 商と剰余を (iCol - 1) 26 で除算して計算し、変数 abに格納します。
  3. b 整数値を対応するアルファベット文字 (0 => A、25 => Z) に変換し、結果文字列の先頭に付けます。
  4. 除数aとループに設定iColします。

たとえば、列番号は 30 です。

  • (ループ 1、手順 1)列番号は少なくとも 1 です。続行します。

  • (ループ 1、手順 2)列番号が 1 未満の列は 26 で除算されます。

    29 /26 = 1 残り 3。 a = 1, b = 3

  • (ループ 1、手順 3)アルファベットの文字に (b+1) タック:

    3 + 1 = 4、4 番目の文字は "D" です。 Result = "D"

  • (ループ 1、手順 4)を使用して手順 1 に戻るしますiCol = a

    iCol = 1

  • (ループ 2、手順 1)列番号は少なくとも 1 です。続行します。

  • (ループ 2、手順 2)列番号が 1 未満の列は 26 で除算されます。

    0 / 26 = 0 残りの 0。 a = 0, b = 0

  • (ループ 2、手順 3)アルファベットの文字に b+1 タック:

    0 + 1 = 1、最初の文字は "A" Result = "AD"

  • (ループ 2、手順 4)を使用して手順 1 に戻るしますiCol = a

    iCol = 0

  • (ループ 3、手順 1)列番号が 1 未満です。停止します。

次の VBA 関数は、列番号の値を同等のアルファベット文字に変換する 1 つの方法です。

Function ConvertToLetter(iCol As Long) As String
   Dim a As Long
   Dim b As Long
   a = iCol
   ConvertToLetter = ""
   Do While iCol > 0
      a = Int((iCol - 1) / 26)
      b = (iCol - 1) Mod 26
      ConvertToLetter = Chr(b + 65) & ConvertToLetter
      iCol = a
   Loop
End Function

メモ この関数は、渡された整数のみを、同等の英数字テキスト文字に変換します。 列の外観や、物理ワークシートの行見出しは変更されません。