VBAを使用してExcelで列番号を文字に変換する

Bilal Shahid 2024年2月15日
  1. VBAを使用してExcelで列番号を文字に変換する
  2. Split() 関数
  3. まとめ
VBAを使用してExcelで列番号を文字に変換する

この記事では、VBA を使用して Microsoft Excel で列番号を列文字に変換するさまざまな関数について説明します。

VBAを使用してExcelで列番号を文字に変換する

Microsoft Excel には、列番号を列文字に変換できる関数がいくつかあります。 これは、列番号を認識しており、それを列文字にマッピングしているユーザーにとって非常に便利です。

これらのソリューションにより、提供された数値だけから正確な列を検索する手間を軽減できます。

解決策 1 - Cells().Address 関数を使用する

Microsoft Excel で行と列を知っていて、対応する参照を見つけたい場合は、VBA で次の関数を使用します。

構文:

Cells(Row,Column).Address

下の画像は機能のイメージです。

セル関数を使用

解決策 2 - Columns().Address 関数を使用する

列番号のみが提供されている場合でも、対応する列文字を最も簡単な方法で見つけることができます。 Columns() 関数を Address() 関数と共に使用して、対応する列参照を取得します。

構文:

Columns(Column Index).Address

Columns() 関数は、Column Index として 100 を使用して実行されました。 関数の結果は、$ColumnLetter:$ColumnLetter の形式で得られます。

関数の動作は、下の画像で確認できます。

Columns().Address 関数を使用

解決策 3 - Split() 関数を Columns().Address 関数と共に使用する

Split() 関数は、ソリューション 2 から取得した回答に対して使用して、住所全体ではなく列の文字のみを取得できます。 Columns().Address 関数に対して Split 関数を使用する方法の構文を次に示します。

Split((Columns(Column Index).Address(,0)),":")(0)

Split() 関数を使用する場合、Address() 関数の ColumnAbsolute パラメータは false として渡され、部分文字列はコロン Delimiter で分割されます。 最初の部分文字列には、列の文字が含まれています。 したがって、Split() 関数の最後にゼロを付けて、最初の部分文字列が必要であることを指定します。

Split() と関数については、この記事の後のセクションで説明します。 詳細については、下にスクロールしてください。

Column Index100 でステートメントを実行すると、次の結果が返されます。

Columns().Address 関数で Split() 関数を使用する

解決策 3 - Cells() 関数を Address() 関数と共に使用する

列番号から列文字を取得する別の手法は、Cells() 関数を Address() 関数と共に使用することです。 列文字を取得する方法は次のとおりです。

構文:

Cells(1, Column Number).Address

このステートメントは、$CV$1 の形式でセル参照を返します。 コード ステートメントを実行すると、次の結果が得られます。

Address() 関数で Cells() 関数を使用

ソリューション 3 の改良

ソリューション 3 をさらに改良して、列の文字のみを抽出できます。 この目的には Split() 関数を使用できます。

列の文字のみを返すステートメントを次に示します。

Split(Cells(1, Column Number).Address(True, False), "$")(0)

Split() 関数は、"$" 記号でアドレス文字列を分割し、ステートメントの最後のゼロは、最初の部分文字列のみが必要であることを示します。

コード ステートメントは、次の結果を生成します。

Address() 関数を使用した Refined Cells() 関数

解決策 4 - 関数を作成する

このソリューションでは、範囲オブジェクトを使用しません。 実行速度が速いと推定され、メモリの使用量が少ないと考えられます。

さらに、Excel API へのアクセスは必要ありません。 パラメータとして指定された列番号から列文字を計算する関数を次に示します。

Function test(ColNum As Long) As String

    Dim n As Long
    Dim ch As Byte
    Dim str As String

    n = ColNum

    Do
        ch = ((n - 1) Mod 26)
        str = Chr(ch + 65) & str
        n = (n - ch) \ 26

    Loop While n > 0
    test = str

End Function

main() サブルーチンで test() 関数を呼び出して、列番号に対応する列文字を取得できます。 以下は、プログラムの実行の描写です。

関数の作成

Split() 関数

Split() 関数は、関数に渡された区切り文字に基づいて、入力式を複数の部分文字列に分割します。

構文:

Split ( Expression, [Delimiter], [Limit], [Compare] )

Split() 関数は Expression をパラメーターとして取り、それをいくつかの部分文字列に分割します。 この必須パラメーターは、String() 関数に渡す必要があります。

2 番目のパラメーターは Delimiter です。 Split() 関数に渡されるオプションの引数。 スペース文字はデフォルトで Delimiter と見なされます。ユーザーは別の Delimiter を指定して、コンマ、コロンなどの文字列を分割できます。

Limit パラメーターは、ユーザーが必要とする部分文字列の総数を指定するオプションの引数です。 デフォルトでは、Limit の値は -1 です。 したがって、すべての部分文字列が返されます。

Compare パラメータは、入力として 0 または 1 を取るオプションの引数です。 関数で実行する必要がある比較のタイプを指定します。

  • 0 が引数として渡されると、大文字と小文字を区別して正確な比較が行われます。 したがって、Delimiter"XYZ" の場合、関数は "XYZ" のみを受け入れ、"xyz" を拒否します。
  • 1 が引数として渡された場合、大文字と小文字を区別しない比較が行われます。 したがって、Delimiter"XYZ" の場合、関数は "xyz" も受け入れます。

まとめ

Microsoft Office アプリケーションは、ユーザーに多数の機能を提供します。 VBA 言語でのプログラミングが追加されたことで、ユーザーは数行のコードで自動化されたタスクを簡単に実行できるようになりました。

VBA は、ユーザーがさまざまなタスクを実行できるようにする多数の機能をサポートしています。 記事に示されているように、同じタスクを達成するためにさまざまなアプローチを利用できます。 入力として提供された列番号に対応する列文字を取得するために、多数のアプローチが使用されます。

著者: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

関連記事 - VBA Excel