【excel VBA】 最終の行を取得する方法 – Cells(Rows.Count, 〇).End(xlUp).Row

アイキャッチ画像 エクセル

最終の行を取得するVBAコードは下記のコードになります

Cells(Rows.Count, 〇).End(xlUp).Row

最終行を取得したい場面は、ループ処理をするとき、もしくは最終行にデータを追加するときに使用することが多いと思います

この記事ではCells(Rows.Count, 〇).End(xlUp).Rowについての紹介していきます

Cells(Rows.Count, 〇).End(xlUp).Rowはコードが長いと思いますが、コードの意味を理解できれば覚えやすいと思います

(最悪ググればいいので、最終行を取得する方法が存在することだけでも覚えましょう)

最終行の取得は実務でもよく使う場面が多いので、この記事を通して覚えちゃいましょう

Cells(Rows.Count, 〇).End(xlUp).Rowの説明

Cells(Rows.Count, 〇).End(xlUp).Rowの流れはExcelにある一番下の行まで下がって、また上に行きデータがあるセルで止まる行番号を取得しています

ここでCells(Rows.Count, 〇).End(xlUp).Rowを切り取って説明していきます

Cells(Rows.Count, 〇).End(xlUp).Row

Cellsの()の中身は(行番号,列番号)を入れます

行番号:Rows.Count ※Rowsと複数系なので注意

列番号:最終行を取得したい列番号

「Rows.Count」は日本語だと「行.数えあげる」みたいな意味になります

つまり、Excelの行を数え上げるので一番最後の行(1048576行目)という意味になります

最終行の画像説明

Cells(Rows.Count, 〇).End(xlUp).Row

「Endキー+上」という意味になります(Endキーは、たぶんDeleteキーの隣にあります)

Cells(Rows.Count, 〇)で一番下まで行き、End(xlUp)でデータが入っているCellまで上に上がります

最終行の画像説明

Cells(Rows.Count, 〇).End(xlUp).Row

そこの行番号は?という意味になります

結果、最終行を取得することができます

Cells(Rows.Count, 〇).End(xlUp).Rowの注意点

Cells(Rows.Count, 〇).End(xlUp).Rowを使用するときの注意点は、下の図通りデータの最終行がバラバラの時です

最終行の画像説明

すべてのデータを使用したいときにCells(Rows.Count, 1).End(xlUp).Rowとした場合、1列目の最終行となるので、赤い線が最終行となってしまします

これだと赤い線から下は参照できなくなります

最終行の画像説明

そのため一番データが入っている列を指定する必要があるのでCells(Rows.Count, 2).End(xlUp).Rowとなります

これでデータがある列の中の一番の最終行を取得することができます

最終行の画像説明

最終行にデータを追加するときの使い方

最終行でデータを追加していきたい場合はこうなります

Sub 最終行に追加()

Dim Lastrow

Lastrow = Cells(Rows.Count, 1).End(xlUp).Row

Cells(Lastrow + 1, 1) = 1

End Sub

3行目: Dim Lastrow

変数で「Lastrow」を作成


5行目: Lastrow = Cells(Rows.Count, 1).End(xlUp).Row

「Lastrow」に1列目の最終行を代入している


7行目: Cells(Lastrow + 1, 1) = 1

Lastrow + 1」は最終行に1足した行番号という意味


なのでコードを実行するたびに最終行に1を足した行番号となるので、「1」が下方向に入っていくコードになります

最終行の画像説明

今回は「1」を入れていますが、工夫次第でいろいろ応用が利きます

例えば日々のデータを蓄積していくため、最終行にデータを入れていく場合などは有効です

コメント

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