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
の形式で得られます。
関数の動作は、下の画像で確認できます。
解決策 3 - Split()
関数を Columns().Address
関数と共に使用する
Split()
関数は、ソリューション 2 から取得した回答に対して使用して、住所全体ではなく列の文字のみを取得できます。 Columns().Address
関数に対して Split
関数を使用する方法の構文を次に示します。
Split((Columns(Column Index).Address(,0)),":")(0)
Split()
関数を使用する場合、Address()
関数の ColumnAbsolute
パラメータは false として渡され、部分文字列はコロン Delimiter
で分割されます。 最初の部分文字列には、列の文字が含まれています。 したがって、Split()
関数の最後にゼロを付けて、最初の部分文字列が必要であることを指定します。
Split()
と関数については、この記事の後のセクションで説明します。 詳細については、下にスクロールしてください。
Column Index
値 100
でステートメントを実行すると、次の結果が返されます。
解決策 3 - Cells()
関数を Address()
関数と共に使用する
列番号から列文字を取得する別の手法は、Cells()
関数を Address()
関数と共に使用することです。 列文字を取得する方法は次のとおりです。
構文:
Cells(1, Column Number).Address
このステートメントは、$CV$1
の形式でセル参照を返します。 コード ステートメントを実行すると、次の結果が得られます。
ソリューション 3 の改良
ソリューション 3 をさらに改良して、列の文字のみを抽出できます。 この目的には Split()
関数を使用できます。
列の文字のみを返すステートメントを次に示します。
Split(Cells(1, Column Number).Address(True, False), "$")(0)
Split()
関数は、"$"
記号でアドレス文字列を分割し、ステートメントの最後のゼロは、最初の部分文字列のみが必要であることを示します。
コード ステートメントは、次の結果を生成します。
解決策 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 は、ユーザーがさまざまなタスクを実行できるようにする多数の機能をサポートしています。 記事に示されているように、同じタスクを達成するためにさまざまなアプローチを利用できます。 入力として提供された列番号に対応する列文字を取得するために、多数のアプローチが使用されます。
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