環境:Office365 Windows10
本日はExcel VBAでの最終行、最終列の取得方法を解説します。
主な使い所としてはFor文で使用するとことが多いと思います。
For文の使用方法はこちら
Excelに入力されているデータは行数や項目数が常に変更されている場合があります。
特に行数=データ数は追加や削除などがある為、一定化されていない場合も多いです。
そこでVBAで処理を行う場合、毎回何行データが入っているか?何項目あるか?など調べるのはめんどくさいです。
そこで一発で取得できる方法を紹介します。
こちらが参考データです。

どこの列の最終行を取得するかを決めます。
会社名の最終行を取得したい場合は1列目を、住所の最終行を取得したい場合は2列目を、電話番号の最終列を取得したい場合は4列目を、という具合に取得したい列をまず決めます。
取得する為のプログラムは以下です。

基本的に同じ構文ですが、一か所違いがあります。
Cells(Rows.Count,〇〇).end(xlup).Row
この○○の部分に取得したい列番号を入力します。
原理としては、
Excelの最大行数から始まり上を見に行きます。
最初にデータが入っていた場所を最終行とみなします。
わかりずらいですね。
つまりデータとは常に全てのデータが入っているとは限りませんよね。
穴抜けになっていることもあります。
行の上から調べようとするとその穴抜けになっている部分で最終行とみなしてしまいます。
ですが、この構文だと一番下から上にのぼっていき最初にデータが入っている行が最終行とみなします。こちらが確実です。
まずはプログラムの実行結果を見てみます。

イミディエイトの部分に変数の中身を表示しています。
こちらはまた別途解説致します。とりあえず変数の中身がわかる場所くらいに思っておいて大丈夫です!
この結果、各変数の中身が分かりました。
上から順番に表示されています。住所の行数が他より1行分少ないことがわかります。
列も同じです。知りたい列数の行を指定します。左から右ではなく、一番右から左へ向かっていき最初にデータが入っていた場所が最終列です。
列の場合はこう書きます。

一気に変数の中身まで表示させました。
一行目と二行目の列の数が違うことがわかります。
こちらは
Cells(○○,Columns.Count).End(xlToleft).Column
○○の部分に知りたい行数を指定してあげれば大丈夫です!
これで最終行と最終列の取得方法がわかりました。
次回はこの記事にも書きましたが、変数の中身の確認方法です。
コメント