見出し画像

Excelの最終行の取得を分かりやすく解説する。

VBAでの最終行の取得方法。

Cells(Rows.Count, 1).End(xlUp).Row と記すのが一般的です。
VBAを勉強し始めてこの訳の分からない呪文みたいなのに直面して
挫折した人も多いんじゃないかと思います。

自分も今まできちんと向き合わずに
定型文としてずっと使ってきましたが
先日このままでは使えない局面に遭遇しまして、
きちんと理解する事にしました。

そうしたら思ったより難しくなかった為
解説文を記事にすることにしました。

これが理解できると一気にVBAで出来る事が増えるので、
一緒に勉強していきましょう

Cells(Rows.Count, 1).End(xlUp).Rowは言い換えると
①A1列の最終行のセルを選択して
②endボタン+↑ボタンを押す
③その場所の行番号を取得する
という事になります。

①はCells(Rows.Count, 1)
②はEnd(xlUp)
③はRow
.で動作が区切られていますね。

①についてまずはCellsについて説明します。
VBAはRangeとCellsの2種類セルの指定方法があります
Cellsは変数を用いたり、単一セルを指定する場合に使います。
指定方法は番号で行、列で記します

cells(1,1)は1行目1列目。つまりA1セル。
cells(2,1)は2行目1列目、A2セル
cells(1,3)はC3セルという事ですね。

そこで、Cells(Rows.count,1)を見てみます
Rows.count行の1列目という事です。
Rows.count行とは何ぞやというと、最終行の事です。
バージョン2007以降は1048576行目
それ以前は65536行目です。
つまりCells(Rows.count,1)はCells(1048576,1)
な訳です。

②End(xlUp)は①のA1048576セルを選択した状態で
Endボタン+↑矢印ボタンを押すのと同じ動作になります。
途中何かデータがあるセルがあればそこに、
何もデータが無い状態で動作するとA1セルに移動します。

③②で選んだセルの行数を取得します

画像1

Excelを四角形で表示すると上図の様な感じになります。

これを応用すると、もしA列の最終行が本当の最終行ではなく、C列であった場合はCells(Rows.count,3)とすればOK
取得したいデータの範囲が最終行では無い場合は
必要な上端行を指定して、End(xlDown)としてもOKです。

行について書きましたが、そっくりそのままRowsをColumnsに書き換えると最終列の取得も出来る様になります。
是非試してみてください。

追記:と書いたものの、見直したら分かりにくいなと思ったので
単純に一番下の行数を表示するだけの簡単なマクロの作例を記載します

まず、適当に数列エクセルに入力してみて下さい


下記の様に記載します(緑色の部分はメモなので入れなくて大丈夫です)


(Rows.Count, 1)の1の部分が列の指定になるので、変えて動かしてみて下さい。↑の画面の例だと1はA列なので7。2はB列なので3 という風になります


そして実際に最下行を取得出来たらそれをどう利用するのか?
については別途記事にしようと思います

この記事が気に入ったらサポートをしてみませんか?