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

はじめに

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

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

詳細情報

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

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

  1. 列番号を指定します iCol 。 1 未満の場合 iCol は停止します。
  2. 26 の除算 (iCol - 1) で商と剰余を計算し、変数 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" です。 結果 = "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" 結果 = "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

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