【エクセル】指定範囲内の列数を算出する方法!VBAでの利用方法まで!

f:id:yshgs_elec:20210213220435j:plain

VBAで複雑な処理を行っていると、

 「AB列からBA列まで繰り返し処理を行いたい。」

「For i = 1 to ・・・あれ?何回繰り返せばいいんだ?」

こんな状況ってよくありますよね。

 

この記事では、こんな状況は一瞬で解決できる

◆指定範囲内に存在する列数を一発算出する方法をご紹介します。

◆また、その内容をVBAで使用する際のサンプルコードも掲載しています。

 

ぜひ最後までご覧ください。

 

それでは早速やっていきます!

 

スポンサーリンク

指定範囲の列数取得:COLUMNS関数

指定した範囲内に何列存在しているかを算出するにはCOLUMNS関数というものを使用します。

 

COLUMNは英語で列という意味ですので、その複数形のような関数名ですね。

なんとなく列数を数えてくれそうな名前をしていますね。

 

このCOLUMNS関数の使用方法は以下の通りです。

=COLUMNS(指定範囲の始点 : 指定範囲の終点)

 

とはいえ、これだけではよくわからないと思いますので、実際の使用例を見ていきましょう。

 

スポンサーリンク

COLUMNS関数の使用例

 早速ですが、以下がCOLUMNS関数を実際に使用したときのサンプル画像です。

f:id:yshgs_elec:20210213213341j:plain

 これでAB列からBA列に何列あるのかを数えてくれています。

 

そうはいっても本当にこの範囲の列数が26なのかは念のため確認しておきましょう。

f:id:yshgs_elec:20210213213525j:plain

はい。

間違いなさそうですね。

 

これで何列あろうが、ある指定範囲内で繰り返し処理を行う回数はこの方法でゲットすることができそうです。

 

スポンサーリンク

VBAでの実際の使用例

 最後にここまで紹介してきた指定範囲内の列数を取得するという作業をVBA上で行うにはどうすればよいかをご紹介していきます。

 

◆VBA上で指定範囲内の列数を取得する方法

Sub Columns_sample()
    MsgBox Range("AB1:BA1").Columns.Count
End Sub

 

ややこしいことに、指定範囲にColumnsを付ければよいというわけではないんですね。

最後に.Countを付けないと数を数えることはできません。

(.CountをつけないとAB1からBA1の範囲に入っているデータを取得してしまいます。)

 

まぁそうゆうもんだと割り切るしかないですね。

 

気を取り直して先ほどのコードを実行すると以下のようなメッセージが出力されました。

 

f:id:yshgs_elec:20210213214706j:plain

しっかりとエクセルシート上でColumns関数を使用したときの結果と同じ数値が出力されていますね。

 

この.Columns.Countでゲットした数値をつかって実際に繰り返し処理を行ってみましょう。

◆VBAでの適用事例

Sub Columns_sample2()
    Dim i, num As Integer
    num = Range("AB1:BA1").Columns.Count
    For i = 1 To num
        Range("AB1").Offset(0, i - 1) = "a"
    Next
End Sub

 

このコードを実行すると以下のような結果になりました。

f:id:yshgs_elec:20210213215305j:plain

しっかりとAB列からBA列まで処理が行われていますね。

(実際はもっと簡単なやり方があるんですけどね・・・。まぁこうゆうやり方もあるということは知っておいて損はないです。)

 

スポンサーリンク

おわりに

というわけで今回は指定範囲内に存在する列数を数える方法についてご紹介しました。

状況によっては使い勝手が良いものですので、ぜひ覚えておきましょう。

 

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

 ↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

 

それではまた!

コメント

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