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

注意

Office 365 用リソース は、 エンタープライズ向け Microsoft 365 アプリに名前変更されています。 この変更の詳細については、 このブログの投稿を参照してください。

はじめに

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

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

詳細情報

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

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

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

たとえば、列番号は 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

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