【Excel】列数を表示するColumn()関数はVBAの強い味方

Excel マクロ(VBA)

今回は、VBAのコードを記述する際の強力な味方であるワークシート関数である、Column関数を紹介します。

スポンサーリンク

Columns関数とは何か

Column関数は非常にシンプルな関数で、関数を入力しているセルの列数をR1C1方式で返します

R1C1方式というのは、列と行をそれぞれ数字で表示する方式です。普段我々がよく使うのはA1方式といって、列数はアルファベットで表記します。例えば以下のセルは”B2″セルとなります。一方のR1C1方式では、行と列をそれぞれ数字で認識し、例えば以下のセルは”R2C2″となります。RはRowつまり行、CはColumnつまり列です。

では、Column関数を使うとどうなるか、具体的にお見せしましょう。B2セルにColumn()と関数を入力すると、R1C1方式で列数に該当する値を返すので、”2″となります。

同じように、C4セルにColumn()と関数を入力すると、”C”を数字に変換して、”3″となります。

広範囲のセルにColumn()を入力すると以下のようになります。列数を表示できていることがわかると思います。

スポンサーリンク

Column関数がなぜVBAの役に立つのか

ではなぜ、このColumn関数がVBAで役に立つのでしょうか。

VBAでは、コード上で列を特定して処理を記述することがあります。例えば以下で”F1″セルを黄色く塗りつぶしたいと思い、それをR1C1方式で記述する必要があるとしましょう。

そうすると、コードは以下のようになります。

Cells(1, 6).Interior.ColorIndex = 6

実行結果は以下の通りです。

なお、Cellsを使う場合はR1C1方式で記述する必要があるのですが、そもそもどういったケースでCellsを使い、どういうケースではRangeなのか、については以下を参照ください。

さて、では作業しているテーブルが以下のようになっていたらどうでしょう?

作業したいセルは、”EO1“セルです。”F1″であれば暗算でもR1C1方式に変換できますが、これだけ横に長いテーブルではA1方式とR1C1方式の変換も容易ではありません。

そこで、例えば一時的に1行追加して、そこにColumn関数を入力してみましょう。

すると上図の様に、列数をR1C1方式で簡単に取得できました。これで、VBAのコードにも使えるようになりました。

コメント

タイトルとURLをコピーしました