【VBA】データの最終行、最終列を取得!基本から画像を使って解説

この記事では、VBA上でエクセル上のデータの最終行、最終列を取得する方法をご紹介していきます。

 

単純にどうやったらできるかを解説するだけではなく、そこで使われているスキル1つ1つを画像を使って丁寧に解説していきます。

 

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

 

それではさっそくやっていきましょう。

 

スポンサーリンク

事前知識①Rows.Countとは

データの最終行、最終列を取得する方法をご紹介する前に、事前にしっておくべき知識を3つご紹介しておきます。

基本的には最終行を取得するやり方も最終列を取得するやり方もほとんど同じですので、今回は代表して最終行を取得する際に必要なスキルを解説していきます。

 

というわけでまずはじめは、Rows.Countというスキルについて解説します。

これらの意味は以下の通りです。

Rows:シート上の行数

Count:個数

これらを組み合わせてRows.Countとすることで、エクセルシート上に存在する最後の行数を取得することができます。

 

ちなみにエクセルシート上に存在する行数は、バージョンによって異なりますが、私が使っているエクセル2019の最終行は以下の通り1048573行になります。

 

この1048573という数値をVBA上で先ほどのRows.Countを使って出力してみましょう。

そのときのVBAコードは以下の通りです。

MsgBox Rows.Count

 

こいつを実行すると以下の結果が出力されます。

先ほどの数値が出力されていることがわかります。

 

例えば1行目の最終行を選択しようと思ったら、このスキルを使って

Cells(Rows.Count, 1)

とすれば1行目の最終行のセルを指定することができます。

 

これが一つ目の重要なスキルです。

スポンサーリンク

事前知識②セルの一括移動方法について

次のスキルはセルの一括移動方法についてです。

 

エクセルシート上に置いて、どこか適当なセルを選択した状態で、

Ctrl + ↓ (↑,→,←どれでもOK)を押してみましょう。

 

もともとシートの一番端にいたとかでなければ、おそらく選択していたセルが大幅に移動しているのではないでしょうか?

 

実際にやってみると以下のような感じですね。

〇A1セルにいる状態から

Ctrl + ↓を同時押し!

一番下のセルまで一瞬で移動できました。

 

このスキルは途中のセルにデータが入っていた場合はそのセルでストップします。

先ほどのA1セルからの移動をする際にA18セルにデータが入っていた場合、以下のようになります。

 

このようにセルを一括で移動することはVBA上でも可能です。

そのスキルは以下に示す通りです。

上に移動:End(xlUp)

下に移動:End(xlDown)

右に移動:End(xlToRight)

左に移動:End(xlToLeft)

 

実際の使用例は以下の通りです。

Cells(100, 1).End(xlUp).Select

これで1列目の100行目にいるところから、同じく1列目の上方向に移動していき、データがあるところのセルまで一括で移動できます。

 

スポンサーリンク

事前知識③.Rowについて

最後に.Rowというスキルについて解説します。

この.Rowとは指定したセルの行番号を取得する際に用いるものです。

 

例えば以下のコードを実行してみましょう。

MsgBox Range(“A5”).Row

 

こいつを実行すると以下の結果が出力されます。

 

以上がセルの最終行を取得する際に必要な3つのスキルになります。

なお、これらのスキルはRow(s)をColumn(s)に置き換えることで、列方向にも適用することが可能になります。

ぜひ覚えておきましょう。

スポンサーリンク

データの最終行、最終列を取得する方法

前置きが非常に長くなりましたが、この記事の本題であるデータの最終行、最終列を取得する方法をご紹介していきます。

(今回は1列目の最終行、1行目の最終列を取得していきます。別の行、列で実行したい場合は以降のコードの1を好きな数値に書き換えましょう。)

 

今回は以下のデータに対して、最終行、最終列を探索してみましょう。

(データサイズとしては10行、10列なので最終行数、列数はともに10です。)

 

まずは最終行を取得する方法からご紹介します。

〇データの最終行を取得する方法

MsgBox Cells(Rows.Count, 1).End(xlUp).Row

 

こいつを実行すると以下の結果が出力されました。

 

問題なく10が出力されましたね。

 

次は最終列を取得する方法からご紹介します。

〇データの最終列を取得する方法

MsgBox Cells(1, Columns.Count).End(xlToLeft).Column

基本的に先ほど最終行を取得する際に実行したコードのRow(s)をColimn(s)に変更し、Cellsの行、列の関係を入れ替えただけですね。

 

こいつを実行すると以下の結果が出力されました。

 

列の場合でも問題なく10が出力されましたね。

 

スポンサーリンク

おわりに

というわけで今回はデータの最終行、最終列を取得する方法を基本から解説していきました。

複雑なデータ処理を行っていると頻繁に行う作業ですので、ぜひマスターしておきましょう。

 

なお、今回はCellsとかRangeというスキルは当然のように使用してきましたが、このあたりからよく理解できていないという方は以下を参考にしてみてください。

【VBA】セルの領域指定方法を詳細解説!一番端まで一括選択も!

 

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

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

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

↓ 応援ボタン

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

それではまた!

コメント

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