最終の行を取得する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」を入れていますが、工夫次第でいろいろ応用が利きます
例えば日々のデータを蓄積していくため、最終行にデータを入れていく場合などは有効です
コメント